医生说:
Each class keeps a list of weak references to its immediate subclasses. This method returns a list of all those references still alive.
但是每个类如何首先获得对其子类的弱引用的列表呢?换句话说,当我创造
class B(A):
pass
A
如何发现{}只是子类化了它?这种机制是否足够健壮,能够在边缘情况下生存(自定义元类、赋值给__bases__
等等)?在
Tags:
作为新类初始化的一部分,对该类的弱引用被添加到每个基类的} 中的Python源代码中看到这一点:
tp_subclasses
成员中。您可以在^{
^{pr2}$__bases__
的setter还更新了每个旧基和新基的子类列表:注意,如果一个元类做了一些事情来定制子类关系的含义,
__subclasses__
不会反映这一点。例如,issubclass(list, collections.abc.Iterable)
是True
,但是list
不会出现在从collections.abc.Iterable
开始的__subclasses__
树的搜索中。在相关问题 更多 >
编程相关推荐