我正忙着让一个类重新创建自己。我试图了解元类属性,但我仍然不是100%清楚。
目标: 一个为某些迭代创建自己的类,然后保存它创建的第一个子级(在下面的例子中,它是self.children中的一个对象)。
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)
这就是我正在尝试但尝试打印新对象的self.name会返回一个“name”不存在的类型AttributeError。我认为这是因为我没有通过属性的字面,但我正在寻找一些最佳实践的澄清,也许是一个解决方案。
如果我不清楚某事,请告诉我,以便我能更好地解释!
答案 0 :(得分:1)
您无需亲自调用__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
答案 1 :(得分:0)
怎么样:
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)