ใน 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) ในการประกาศคลาส