Python MRO(方法解析顺序)
多重继承意味着单个子类可以继承多个类,并且子类将被授权访问属性和函数,除非它们不是特定类的私有属性和函数。MRO技术用于搜索正在执行的类的顺序。
在本文中,我们将学习Python MRO(方法解析顺序)。
Python中的MRO(方法解析顺序)
MRO是Python中在类层次结构中查找方法的顺序。它主要用于在子类的父类中查找方法和属性。
首先,在子类中搜索属性或方法,继承时遵循指定的顺序。这种顺序也称为类的线性化,在检查顺序时应用一组规则。
当从其他类继承时,编译器需要一种正确的方法来解析通过类的实例调用的方法。当我们在基类的多个父类中有相同的函数时,它在多重继承中起着重要的作用。
代码示例:
class A(object):
def dothis(self):
print('This is A class')
# Class B is inheriting Class A
class B(A):
def dothis(self):
print('This is B class')
# Class C is inheriting Class B
class C(B):
def dothis(self):
print('This is C class')
# Class D is inheriting Class C and B
class D(C, B):
def dothis(self):
print('This is D class')
# creating the object of Class D
d_obj = D()
# calling funtion dothis()
d_obj.dothis()
print(D.mro())
输出:
This is D class
[<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
在上面的例子中,函数dothis()
在每个类中都可用。当您使用类d_obj
的对象D
调用它时,它首先在当前类中检查它。
如果它在那里,它将返回函数。否则,它将根据mro()
函数的规则继续查找父类。
此外,要知道类的顺序,可以使用当前类名调用mro()
函数,如上面的示例D.mro()
所示。当前的顺序是Class D -> Class C -> Class B -> Class A
,您可以在继承过程中相应地更改它。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。