所以我在网上做了一些研究,似乎 __subclasses__
方法返回了 python 对象的所有继承类( relevant stack overflow question )
在 python3.8 上我尝试了以下操作:
class A:
a = 1
class B:
b = 2
class C(A, B):
c = 3
obj = C()
print('a: ', obj.a)
print('subclasses: ', C.__subclasses__())
然后我就出去了
a: 1
subclasses: []
这表明类C成功继承了A和B,但是它们在子类方法中没有显示?那么 __subclasses__
方法中是否缺少某些内容,或者该方法是否针对 python 3.8 进行了更改?
最佳答案
只是结合上面的答案:
my_class.__subclasses__
将返回 my_class 的子类C.__mro__
显示您案例中的继承层次结构: (__main__.C'>, __main__.A'>, __main__.B'>, <输入“ 对象
”>)
object / \ A B \ / C
简而言之,__subclasses__
在对象层次结构阶梯中向下,__mro__
向上。祝你好运:)
关于python - 查看python中所有继承的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71252362/