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 ,我们可以在继承时进行相应的更改。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串