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

อะไรคือความแตกต่างระหว่างคลาสสไตล์เก่าและสไตล์ใหม่ใน Python?


ใน Python 2.x มีคลาสสองสไตล์ขึ้นอยู่กับว่ามีหรือไม่มีประเภทในตัวเป็นคลาสฐาน -

"classic" style or old style classes have no built-in type as a base class:
>>> class OldSpam:      # no base class
...     pass
>>> OldSpam.__bases__
()

"ใหม่" คลาสสไตล์:พวกเขามีประเภทที่มีอยู่แล้วภายในเป็นคลาสพื้นฐาน ซึ่งหมายความว่าไม่ว่าทางตรงหรือทางอ้อม พวกเขามีวัตถุเป็นคลาสพื้นฐาน -

>>> class NewSpam(object):           # directly inherit from object
...    pass
>>> NewSpam.__bases__
(<type 'object'>,)
>>> class IntSpam(int):              # indirectly inherit from object...
...    pass
>>> IntSpam.__bases__
(<type 'int'>,)
>>> IntSpam.__bases__[0].__bases__   # ... because int inherits from object
(<type 'object'>,)

เมื่อเขียนชั้นเรียนมักจะต้องการเรียนรูปแบบใหม่เสมอ ข้อดีของการทำเช่นนั้นมีมากมาย -

รองรับคำอธิบาย โดยเฉพาะอย่างยิ่ง โครงสร้างต่อไปนี้เป็นไปได้ด้วยตัวอธิบาย -

วิธีการเรียน − เมธอดที่ได้รับคลาสเป็นอาร์กิวเมนต์โดยปริยายแทนที่จะเป็นอินสแตนซ์

วิธีคงที่ − วิธีที่ไม่ได้รับอาร์กิวเมนต์โดยปริยายเป็นอาร์กิวเมนต์แรก

คุณสมบัติพร้อมคุณสมบัติ:สร้างฟังก์ชันสำหรับจัดการการรับ การตั้งค่า และการลบแอตทริบิวต์

Python 3.x รองรับเฉพาะคลาสสไตล์ใหม่โดยปริยาย ไม่จำเป็นต้องพูดถึงคำว่า object ในวงเล็บในการประกาศคลาส