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

返回:

AttributeError: class Test has no attribute '__subclasses__'

print(int.__subclasses__())

返回:

[<type 'bool'>]

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

这个内置方法不是自定义类型的保留者,是吗?

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

4

1 回答 1

6

你需要这样做:-

class Foo(object):
    pass

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

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

于 2012-11-18T16:14:22.393 回答