Python 将类别A的实例分配给类别A的成员是否为循环引用?
既然Python 将类别A的实例分配给类别A的成员是否为循环引用?,python,cyclic-reference,Python,Cyclic Reference,既然Yummie.instance是Yummie的一个实例,并且type(Yummie.instance)==Yummie是真的,那会是循环引用的一个例子吗?我应该更喜欢创建弱引用吗?不过,如果引用较弱,它还需要另一个地方来存放Yummie实例,否则它会立即再次被删除 它是一个循环引用,因为Yummie()。\uuuu class\uuuu包含Yummie,但除非您运行的是非常旧的Python版本,否则由于垃圾收集器的循环检测,这不应该是一个问题。不,这不是循环引用。类Yummie具有引用Yum
Yummie.instance
是Yummie
的一个实例,并且type(Yummie.instance)==Yummie
是真的,那会是循环引用的一个例子吗?我应该更喜欢创建弱引用吗?不过,如果引用较弱,它还需要另一个地方来存放Yummie
实例,否则它会立即再次被删除 它是一个循环引用,因为Yummie()。\uuuu class\uuuu
包含Yummie
,但除非您运行的是非常旧的Python版本,否则由于垃圾收集器的循环检测,这不应该是一个问题。不,这不是循环引用。类Yummie
具有引用Yummie
的单个实例的属性。仅此而已。@Asad但是Yummie
实例引用了它的类,不是吗?是的,我忽略了这一点(Ignacio的回答指出了这一点)。我考虑的更多的是程序正确性而不是内存使用,循环引用阻止了对相互依赖的方法/对象的评估,因为每个方法/对象都需要先评估另一个。这里的情况并非如此,因为可以定义Yummie
类,而无需存在Yummie
的实例。如果您有instance=Yummie()
,这将是一个循环引用,因为类Yummie
在没有Yummie
实例的情况下无法定义,如果未定义类Yummie
,则无法创建Yummie
的实例。那不行。
class Yummie(object):
instance = None
Yummie.instance = Yummie()