用'type'动态定义的python类消失
我正在使用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个子
类型
动态声明一些类。比如:
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
方法,请参阅:
每个新样式的类都保留一个对其直接子类的弱引用列表。此方法返回所有仍处于活动状态的引用的列表