คำถามติดแท็ก method-resolution-order

4
“ mro ()” ทำอะไร?
ในdjango.utils.functional.py: for t in type(res).mro(): # <----- this if t in self.__dispatch: return self.__dispatch[t][funcname](res, *args, **kw) ฉันไม่เข้าใจmro(). มันทำอะไรและ "mro" หมายถึงอะไร?

4
Method Resolution Order (MRO) ในคลาสรูปแบบใหม่?
ในหนังสือ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 …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.