用'type'动态定义的python类消失

用'type'动态定义的python类消失,python,Python,我正在使用python的类型动态声明一些类。比如: class ParentClass(object): pass for class_name in ['A', 'B', 'C', 'D', 'E']: type(class_name, (ParentClass,), {}) print('subclasses of ParentClass:', ParentClass.__subclasses__()) 通常,打印行先打印1,然后打印2、3、4,最后打印所有5个子

我正在使用python的
类型
动态声明一些类。比如:

class ParentClass(object):
    pass

for class_name in ['A', 'B', 'C', 'D', 'E']:
    type(class_name, (ParentClass,), {})
    print('subclasses of ParentClass:', ParentClass.__subclasses__())
通常,打印行先打印1,然后打印2、3、4,最后打印所有5个子类

但有时,它会打印1、2、3,然后只打印1、2个子类:只打印类
D
E
。和
ParentClass.\uu子类\uuu()
其他任何地方都只是数组
[D,E]

最奇怪的是,在项目的其他地方更改其他完全不相关的代码会影响它

有没有可能,因为我没有给类分配任何名称,它们被垃圾收集?这就是为什么
ParentClass.\uu子类\uuu()
再也找不到类对象了

有没有可能,因为我没有给类分配任何名称,它们被垃圾收集?这就是为什么
ParentClass.\uu子类\uuu()
再也找不到类对象了

是的,就是这样。有关
\uuuu子类\uuuu
方法,请参阅:

每个新样式的类都保留一个对其直接子类的弱引用列表。此方法返回所有仍处于活动状态的引用的列表