Python:可以在类型中调用__subclasses __(),而不是在自定义对象上调用

Ora*_*Tux 1 python

class Test: pass
print(Test.__subclasses__())
Run Code Online (Sandbox Code Playgroud)

收益:

AttributeError: class Test has no attribute '__subclasses__'
Run Code Online (Sandbox Code Playgroud)

print(int.__subclasses__())
Run Code Online (Sandbox Code Playgroud)

收益:

[<type 'bool'>]
Run Code Online (Sandbox Code Playgroud)

为什么我不能在自定义对象上调用subclasses()?

这种内置方法不是自定义类型的reserver,是吗?

每个类都保留一个对其直接子类的弱引用列表.此方法返回所有仍然存活的引用的列表.例:

Cal*_*eng 6

你需要这样做: -

class Foo(object):
    pass

# This works perfectly fine now.
print(Foo.__subclasses__())
Run Code Online (Sandbox Code Playgroud)

上面的类是一个"新式"类,因为它继承自对象类.新式类提供了许多"旧式"类没有的额外框架.新样式类的一个特定属性是能够使用子类方法确定类的子类.