Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ความแตกต่างระหว่าง Old-style และ New-style Classes ใน Python

ใน Python 2.x มี 2 รูปแบบคลาส ขึ้นอยู่กับการมีหรือไม่มี Built-in Type เป็น Base Class

Old-style / Classic Classes (ไม่มี Base Class)

>>> class OldSpam:
...     pass
>>> OldSpam.__bases__
()

New-style Classes (มี Built-in Type เป็น Base Class โดยตรงหรือโดยอ้อม คือ object)

>>> class NewSpam(object):
...     pass
>>> NewSpam.__bases__
(<type 'object'>,)

>>> class IntSpam(int):
...     pass
>>> IntSpam.__bases__
(<type 'int'>,)
>>> IntSpam.__bases__[0].__bases__
(<type 'object'>,)

ข้อดีของ New-style Classes (ควรใช้เสมอ)

  • รองรับ Descriptors: ทำให้ classmethod, staticmethod, property ใช้งานได้
  • classmethod: เมธอดที่รับคลาสเป็นอาร์กิวเมนต์แรกแทนอินสแตนซ์
  • staticmethod: เมธอดที่ไม่รับ self
  • property: จัดการ get/set/delete แอตทริบิวต์

Python 3.x รองรับเฉพาะ New-style Classes อย่างไรกำหนด (Implicitly) ไม่ต้องเขียน (object) ในการประกาศคลาส