本文主要是介绍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 的对象 d_obj 调用它时,它首先在当前类中检查它。
如果存在,它将返回该函数。 否则,它将根据 mro()
函数的规则继续查找父类。
此外,要了解类的顺序,您可以使用当前类名调用 mro()
函数,如上面的示例 D.mro()
所示。 目前的顺序是 Class D -> Class C -> Class B -> Class A ,我们可以在继承时进行相应的更改。
这篇关于Python MRO(方法解析顺序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!