查看 python 中所有继承的 类
See all inherited classes in python
所以我在网上做了一些研究,似乎 __subclasses__
方法 returns 所有继承的 class 都是 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: []
这表明class C 成功继承了A 和B,但是它们没有出现在subclasses 方法中?那么 __subclasses__
方法中是否缺少某些内容,或者 python 3.8 的方法是否已更改?
只是结合上面的答案:
my_class.__subclasses__
将 return classes,class 来自 my_class
C.__mro__
显示您案例中的继承层次结构:
(__main__.C'>, __main__.A'>, __main__.B' >, object'>)
object
/ \
A B
\ /
C
简而言之,__subclasses__
在对象层次结构阶梯上向下,__mro__
向上。祝你好运:)
所以我在网上做了一些研究,似乎 __subclasses__
方法 returns 所有继承的 class 都是 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: []
这表明class C 成功继承了A 和B,但是它们没有出现在subclasses 方法中?那么 __subclasses__
方法中是否缺少某些内容,或者 python 3.8 的方法是否已更改?
只是结合上面的答案:
my_class.__subclasses__
将 return classes,class 来自 my_classC.__mro__
显示您案例中的继承层次结构: (__main__.C'>, __main__.A'>, __main__.B' >, object'>)
object / \ A B \ / C
简而言之,__subclasses__
在对象层次结构阶梯上向下,__mro__
向上。祝你好运:)