Dalam buku Python in a Nutshell (Edisi ke-2) terdapat contoh yang menggunakan
kelas gaya lama untuk mendemonstrasikan bagaimana metode diselesaikan dalam urutan resolusi klasik dan
apa bedanya dengan orde baru.
Saya mencoba contoh yang sama dengan menulis ulang contoh dalam gaya baru tetapi hasilnya tidak berbeda dengan apa yang diperoleh dengan kelas gaya lama. Versi python yang saya gunakan untuk menjalankan contoh adalah 2.5.2. Berikut contohnya:
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__
Panggilan tersebut instance.amethod()
dicetak Base1
, tetapi sesuai pemahaman saya tentang MRO dengan gaya kelas baru, outputnya seharusnya Base3
. Panggilan Derived.__mro__
mencetak:
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
Saya tidak yakin apakah pemahaman saya tentang MRO dengan kelas gaya baru tidak benar atau saya melakukan kesalahan konyol yang tidak dapat saya deteksi. Tolong bantu saya untuk lebih memahami MRO.