👻 Check our latest review to choose the best laptop for Machine Learning engineers and Deep learning tasks!
In the book Python in a Nutshell (2nd Edition) there is an example which uses
old style classes to demonstrate how methods are resolved in classic resolution order and
how is it different with the new order.
I tried the same example by rewriting the example in new style but the result is no different than what was obtained with old style classes. The python version I am using to run the example is 2.5.2. Below is the example:
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__
The call instance.amethod()
prints Base1
, but as per my understanding of the MRO with new style of classes the output should have been Base3
. The call Derived.__mro__
prints:
(<class "__main__.Derived">, <class "__main__.Base2">, <class "__main__.Base1">, <class "__main__.Base3">, <type "object">)
I am not sure if my understanding of MRO with new style classes is incorrect or that I am doing a silly mistake which I am not able to detect. Please help me in better understanding of MRO.
👻 Read also: what is the best laptop for engineering students?
We hope this article has helped you to resolve the problem. Apart from Method Resolution Order (MRO) in new-style classes?, check other __main__ Python module-related topics.
Want to excel in Python? See our review of the best Python online courses 2023. If you are interested in Data Science, check also how to learn programming in R.
By the way, this material is also available in other languages:
- Italiano Method Resolution Order (MRO) in new-style classes?
- Deutsch Method Resolution Order (MRO) in new-style classes?
- Français Method Resolution Order (MRO) in new-style classes?
- Español Method Resolution Order (MRO) in new-style classes?
- Türk Method Resolution Order (MRO) in new-style classes?
- Русский Method Resolution Order (MRO) in new-style classes?
- Português Method Resolution Order (MRO) in new-style classes?
- Polski Method Resolution Order (MRO) in new-style classes?
- Nederlandse Method Resolution Order (MRO) in new-style classes?
- 中文 Method Resolution Order (MRO) in new-style classes?
- 한국어 Method Resolution Order (MRO) in new-style classes?
- 日本語 Method Resolution Order (MRO) in new-style classes?
- हिन्दी Method Resolution Order (MRO) in new-style classes?
Berlin | 2023-04-01
Thanks for explaining! I was stuck with Method Resolution Order (MRO) in new-style classes? for some hours, finally got it done 🤗. Checked yesterday, it works!
Prague | 2023-04-01
code Python module is always a bit confusing 😭 Method Resolution Order (MRO) in new-style classes? is not the only problem I encountered. Will get back tomorrow with feedback
London | 2023-04-01
Python-Funktionen und -Methoden is always a bit confusing 😭 Method Resolution Order (MRO) in new-style classes? is not the only problem I encountered. Checked yesterday, it works!