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

时间:2012-11-18 16:10:05

标签: python

class Test: pass
print(Test.__subclasses__())

返回:

AttributeError: class Test has no attribute '__subclasses__'

print(int.__subclasses__())

返回:

[<type 'bool'>]

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

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

  

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

1 个答案:

答案 0 :(得分:6)

您需要这样做: -

class Foo(object):
    pass

# This works perfectly fine now.
print(Foo.__subclasses__())

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