มีความแตกต่างระหว่าง
class A:
...
และ
class A():
...
ฉันเพิ่งรู้ว่าชั้นเรียนสองชั้นของฉันถูกกำหนดให้เป็นแบบเดิมและพวกเขาก็ใช้ได้ดี วงเล็บว่างทำให้เกิดความแตกต่างหรือไม่?
มีความแตกต่างระหว่าง
class A:
...
และ
class A():
...
ฉันเพิ่งรู้ว่าชั้นเรียนสองชั้นของฉันถูกกำหนดให้เป็นแบบเดิมและพวกเขาก็ใช้ได้ดี วงเล็บว่างทำให้เกิดความแตกต่างหรือไม่?
คำตอบ:
ข้อหลังนี้เป็นข้อผิดพลาดทางไวยากรณ์ใน Python เวอร์ชันเก่า ใน Python 2.x คุณควรได้รับจากobject
เมื่อใดก็ตามที่เป็นไปได้เนื่องจากคุณสมบัติที่มีประโยชน์หลายอย่างจะมีให้เฉพาะกับคลาสสไตล์ใหม่เท่านั้น(การรับมาจากobject
เป็นทางเลือกใน Python 3.x เนื่องจากคลาสสไตล์ใหม่เป็นค่าเริ่มต้น)
class A()
เคยไวยากรณ์ผิดพลาดหรือไม่? หลาม 1.4 เอกสารบอกว่าของดีและผู้ที่มีเอกสารที่เก่าแก่ที่สุดที่ยังคงมีอยู่ใน python.org
แม้ว่าการใช้วงเล็บว่างในนิยามคลาสอาจไม่ถูกต้องทางไวยากรณ์ แต่วงเล็บหลังนิยามคลาสจะถูกใช้เพื่อระบุการสืบทอดเช่น:
class A(baseClass):
...
ใน Python ไวยากรณ์ที่ต้องการสำหรับการประกาศคลาสโดยไม่มีคลาสพื้นฐานคือ:
class A:
...
อย่าใช้วงเล็บเว้นแต่ว่าคุณจะอยู่ในคลาสอื่น ๆ
เอกสารเกี่ยวกับเรื่องนี้จะทำให้คุณมีความเข้าใจที่ดีขึ้นของวิธีการประกาศและการเรียนการใช้งานในหลาม
object
เรื่องไร้สาระจะได้รับการดูแลโดยอัตโนมัติ