【发布时间】:2011-09-02 12:35:01
【问题描述】:
我正在尝试在 MyClass 的定义中创建一个新的 MyClass 实例。
为什么这段代码会失败,如何实现?
class MyClass:
def __init__(self):
self.child=MyClass()
mc=MyClass()
【问题讨论】:
-
你不能。你到底想做什么?
-
我正在创建一棵树,它可以有孩子。他们属于同一类。
-
这种方法会无限循环(如果可行的话)。
-
他们可以有孩子。如果您在这样的构造函数中创建它,它们将始终有孩子。你应该分配
self.child = None并且只在他们应该有孩子的时候将 self.child 分配给他们。 -
附带说明,最好总是创建继承自
object的新类,而不是什么都没有 (class MyClass(object):...),这样您就可以使用 new-style classes .