ในหนังสือPython in a Nutshell (2nd Edition)มีตัวอย่างที่ใช้
คลาสแบบเก่าเพื่อสาธิตวิธีการแก้ไขตามลำดับความละเอียดแบบคลาสสิกและ
แตกต่างอย่างไรกับลำดับใหม่
ฉันลองใช้ตัวอย่างเดียวกันนี้โดยเขียนตัวอย่างใหม่ในรูปแบบใหม่ แต่ผลลัพธ์ก็ไม่ต่างจากที่ได้จากคลาสแบบเก่า เวอร์ชัน python ที่ฉันใช้เพื่อเรียกใช้ตัวอย่างคือ2.5.2 ด้านล่างนี้คือตัวอย่าง:
class Base1(object):
def amethod(self): print "Base1"
class Base2(Base1):
pass
class Base3(object):
def amethod(self): print "Base3"
class Derived(Base2,Base3):
pass
instance = Derived()
instance.amethod()
print Derived.__mro__
การโทรinstance.amethod()
พิมพ์ออกBase1
มา แต่ตามความเข้าใจของฉันเกี่ยวกับ MRO ที่มีรูปแบบคลาสใหม่ผลลัพธ์ควรจะเป็นBase3
กับรูปแบบใหม่ของการเรียนการส่งออกควรจะได้รับ การโทรDerived.__mro__
พิมพ์:
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
ฉันไม่แน่ใจว่าความเข้าใจของฉันเกี่ยวกับ MRO กับคลาสรูปแบบใหม่นั้นไม่ถูกต้องหรือฉันกำลังทำผิดพลาดโง่ ๆ ซึ่งฉันไม่สามารถตรวจพบได้ โปรดช่วยฉันในการทำความเข้าใจ MRO ให้ดีขึ้น