动态创建的类是否像其他对象一样被破坏?

时间:2014-06-16 21:31:23

标签: python garbage-collection

在前言中,这是一个假设,只是在我编写一些代码时突然出现的问题。动态创建类的适用范围非常窄。

在Python中,我可以动态定义一个类,例如,将其定义嵌套在def [1]中:

def NewClass(doc):
  class MyClass(object):
    __doc__ = doc
  return MyClass

当班级实例未被使用时会发生什么?它的引用数是否为零,是否像其他对象一样被销毁?或者它是否特别处理,因为它是一个类?阅读语言文档,我没有看到关于类对象破坏的任何内容。

更具体地说,如果我有代码创建这些响应用户请求,例如,因此在进程的生命周期中创建了数千或数百万,我将需要担心由于所有创建的内存不足类?

[1]例如type“函数”,可能还有各种元类内容或__new__个技巧。

1 个答案:

答案 0 :(得分:2)

是的,类也是对象,并且由相同的引用计数规则控制。

如果您对返回值所做的只是创建实例,则对该类的唯一引用是这些实例上的__class__属性。如果没有该特定类的实例,将不再引用和删除它。