查看 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 的方法是否已更改?

只是结合上面的答案:

  1. my_class.__subclasses__ 将 return classes,class 来自 my_class

  2. C.__mro__ 显示您案例中的继承层次结构: (__main__.C'>, __main__.A'>, __main__.B' >, object'>)

  object
   /  \
  A    B
   \  /
    C

简而言之,__subclasses__ 在对象层次结构阶梯上向下,__mro__ 向上。祝你好运:)