gpt4 book ai didi

python - 获取子类的重写函数

转载 作者:行者123 更新时间:2023-12-03 12:48:27 24 4
gpt4 key购买 nike

有没有办法在Python中获取子类的所有替代函数?

例:

class A:
def a1(self):
pass

def a2(self):
pass


class B(A):
def a2(self):
pass

def b1(self):
pass


在这里,我想为类 ["a2"]的对象(或类对象本身)获取列表 B,因为类 B仅覆盖单个方法,即 a2

最佳答案

您可以使用cls.__bases__访问父类,使用dir查找父类的所有属性,并使用vars访问类本身的所有属性:

def get_overridden_methods(cls):
# collect all attributes inherited from parent classes
parent_attrs = set()
for base in cls.__bases__:
parent_attrs.update(dir(base))

# find all methods implemented in the class itself
methods = {name for name, thing in vars(cls).items() if callable(thing)}

# return the intersection of both
return parent_attrs.intersection(methods)




>>> get_overridden_methods(B)
{'a2'}

关于python - 获取子类的重写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58540997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com