在前言中,这是一个假设,只是在我编写一些代码时突然出现的问题。动态创建类的适用范围非常窄。
在Python中,我可以动态定义一个类,例如,将其定义嵌套在def [1]中:
def NewClass(doc):
class MyClass(object):
__doc__ = doc
return MyClass
当班级实例未被使用时会发生什么?它的引用数是否为零,是否像其他对象一样被销毁?或者它是否特别处理,因为它是一个类?阅读语言文档,我没有看到关于类对象破坏的任何内容。
更具体地说,如果我有代码创建这些响应用户请求,例如,因此在进程的生命周期中创建了数千或数百万,我将需要担心由于所有创建的内存不足类?
[1]例如type
“函数”,可能还有各种元类内容或__new__
个技巧。
答案 0 :(得分:2)
是的,类也是对象,并且由相同的引用计数规则控制。
如果您对返回值所做的只是创建实例,则对该类的唯一引用是这些实例上的__class__
属性。如果没有该特定类的实例,将不再引用和删除它。