Python 自我复制 Class

Python Self Replicating Class

我正忙于让 class 重新创建自己。我试图了解 metaclass 属性,但我仍然不是 100% 清楚。

目标: 一个 Class 为一些迭代创建自己,然后保持它创建的 children 的第一度(在下面的示例中,它是 self.children 中的一个 object)。

class MyClass(object):

    def __init__(self, num):

        self.name = num
        self.children = []

        if num !=0:
            cls = self.__new__(self.__class__ )
            cls = self.__init__(num-1)
            self.children.append(cls)

            #Uncomment for Error
            #print cls.name


if __name__ == "__main__":
    c = MyClass(3)

这就是我正在尝试的,但试图打印新 object returns 的 self.name 一种 "name" 不存在的 AttributeError。我认为这是因为我没有传递属性的指令,但我正在寻找最佳实践的一些说明,也许是一个解决方案。

如果我不清楚某些事情,请告诉我,以便我更好地解释!

无需自己调用__new__()__init__()方法;构造函数将自动处理该部分。

class MyClass(object):
    def __init__(self, num):
        self.name = num
        self.children = []

        if num !=0:
            cls = self.__class__(num-1)
            self.children.append(cls)
            print cls.name

怎么样:

class MyClass(object):

    def __init__(self, num):
        self.name = num
        self.children = []

        if num != 0:
            self.children.append(self.__class__(num - 1))

if __name__=="__main__":
    c = MyClass(3)