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)
我正忙于让 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)