Python ชั้นและอ็อบเจกต์

Python ชั้น/อ็อบเจกต์

Python คือภาษาเขียนโปรแกรมที่มุ่งเน้นที่อ็อบเจกต์

เกือบทุกอย่างใน Python ต่างเป็นอ็อบเจกต์ ที่มีตัวแปรและวิธี

ชั้น (Class) คล้ายกับคอนสตรัคเตอร์ของอ็อบเจกต์ หรือแบบที่ใช้สร้างอ็อบเจกต์

สร้างชั้น

เพื่อสร้างชั้น ใช้ class คำเปิดคลาส:

ตัวอย่าง

ใช้อาทิตย์ x ในการสร้างชั้นที่มีชื่อ MyClass:

class MyClass:
  x = 5

ปฏิบัติตัวอย่าง

สร้างอ็อบเจกต์

ตอนนี้เราสามารถใช้ชั้นที่มีชื่อ myClass ในการสร้างอ็อบเจกต์ได้

ตัวอย่าง

สร้างอ็อบเจกต์ที่มีชื่อ p1 และพิมพ์ค่าของ x:

p1 = MyClass()
print(p1.x)

ปฏิบัติตัวอย่าง

__init__() ฟังก์ชัน

ตัวอย่างที่อยู่ด้านบนเป็นรูปแบบของชั้นและอ็อบเจกต์ที่เรียบง่ายที่สุด แต่ไม่ได้ใช้ในโปรแกรมที่มีประโยชน์ทางปฏิบัติในความเป็นจริง

เพื่อที่จะเข้าใจความหมายของชั้น เราต้องเข้าใจฟังก์ชันที่เป็นส่วนประกอบของภาษาเดี่ยว __init__() ฟังก์ชัน

ทุกชั้นมีฟังก์ชัน __init__() ซึ่งมักจะทำงานเมื่อชั้นเริ่มทำงาน

ใช้ฟังก์ชัน __init__() ในการกำหนดค่าแก่ตัวแปรของอ็อบเจกต์ หรือปฏิบัติการอื่นที่ต้องทำขณะที่สร้างอ็อบเจกต์:

ตัวอย่าง

สร้างชั้น Person โดยใช้ฟังก์ชัน __init__() เพื่อกำหนดค่าแก่ name และ age:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age
p1 = Person("Bill", 63)
print(p1.name)
print(p1.age)

ปฏิบัติตัวอย่าง

หมายเหตุ:ในทุกครั้งที่ใช้ชั้นเพื่อสร้างอ็อบเจกต์ใหม่เรียกโดยอัตโนมัติ __init__() ฟังก์ชัน

วิธีของอ็อบเจกต์

อ็อบเจกต์ก็สามารถมีวิธีด้วย

จะมีการสร้างวิธีในชั้น Person ของเรา:

ตัวอย่าง

เพิ่มฟังก์ชันที่พิมพ์ข้อความเตือนและปฏิบัติตามมันบนอ็อบเจกต์ p1:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def myfunc(self):
    print("Hello my name is " + self.name)
p1 = Person("Bill", 63)
p1.myfunc()

ปฏิบัติตัวอย่าง

คำเตือน:self พารามิเตอร์คืออ้างอิงที่อยู่ของตัวอินสตรังซ์ปัจจุบันของชั้น ใช้เพื่อเข้าถึงตัวแปรที่เป็นของชั้น

ตัวแปร self

self ตัวแปรเป็นอ้างอิงที่มีอยู่ของตัวแปรในชั้น ใช้เพื่อเข้าถึงตัวแปรที่เป็นของชั้น

มันไม่จำเป็นต้องมีชื่อ selfคุณสามารถเรียกใช้มันได้ตามต้องการ แต่มันต้องเป็นฟังก์ชันใดๆ ของชั้นตัวแปรที่แรก:

ตัวอย่าง

ใช้คำว่า mysillyobject และ abc แทนคำว่า self:

class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age
  def myfunc(abc):
    print("Hello my name is " + abc.name)
p1 = Person("Bill", 63)
p1.myfunc()

ปฏิบัติตัวอย่าง

การปรับปรุงคุณสมบัติเจตนา

คุณสามารถเปลี่ยนคุณสมบัติของเจตนาเช่นนี้

ตัวอย่าง

ตั้งค่าอายุของ p1 ให้เป็น 40

p1.age = 40

ปฏิบัติตัวอย่าง

ลบคุณสมบัติเจตนา

คุณสามารถใช้ del ใช้คำสั่งลบเจตนาของเจตนา

ตัวอย่าง

ลบออบเจตนาของ p1 ที่มีชื่อ age

del p1.age

ปฏิบัติตัวอย่าง

ลบเจตนา

ใช้ del ใช้คำสั่งลบเจตนา

ตัวอย่าง

ลบออบเจตนา p1

del p1

ปฏิบัติตัวอย่าง

คำสั่ง pass

การกำหนดคำแปลงเป็นชัดเจนตามรูปแบบ แต่ถ้าคุณเขียนคำแปลงชัดเจนที่ไม่มีเนื้อหาด้วยเหตุผลบางอย่าง ใช้คำสั่ง pass ที่จะป้องกันข้อผิดพลาด

ตัวอย่าง

class Person:
  pass

ปฏิบัติตัวอย่าง