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 ,您可以在继承过程中相应地更改它。