ME:
python 如何判断某个方法是继承于哪个父类? 给个能直接用的示例,能够自动遍历多层父类
GPT:
在 Python 中,可以通过使用内置函数 inspect.getmro() 来获取一个类的方法解析顺序,从而判断某个方法是继承自哪个父类。示例代码如下:
import inspect
class A:
def foo(self):
pass
class B(A):
pass
class C(B):
pass
def find_method_class(cls, method_name):
for c in inspect.getmro(cls):
if method_name in c.__dict__:
return c
return None
c = C()
method_class = find_method_class(C, 'foo')
print(method_class)
在上述代码中,我们定义了三个类 A、B 和 C,其中 B 和 C 分别继承自 A。然后定义了一个函数 find_method_class,该函数接受一个类和一个方法名作为参数,返回该方法所在的类。在函数中,我们使用 inspect.getmro() 函数获取类的方法解析顺序,并逐一遍历每一个类,判断该类中是否存在该方法,如果存在则返回该类。如果遍历完所有类都没有找到该方法,则返回 None。
最后,我们创建了一个 C 类的实例,并使用 find_method_class 函数查找该实例中的 foo 方法所在的类,并打印出结果。由于 C 类本身并没有定义 foo 方法,因此该方法继承自其父类 A。因此,上述代码的输出结果为:
<class '__main__.A'>
该结果表明,C 类的 foo 方法是继承自 A 类的。
标签:foo,python,find,method,ChatGPT,父类,方法,class From: https://www.cnblogs.com/joyer/p/17212558.html