我有一个类,它表示一个树状结构的节点,它存储它的父节点和任何子节点
class Node:
def __init__(self,n, p):
self.name = n
self.parent = p
self.children = []
if p != None:
p.addChild(self)
def setParent(np):
if np != None:
self.parent = np
def addChild(nc):
if nc != None:
children.append(nc)
出于自动化目的,当创建节点时,我希望它调用父节点的addChild
方法将其自身添加到子列表中,但是当以这种方式使用父节点初始化节点时,我收到错误:
TypeError: addChild() takes exactly 1 argument (2 given)
如何从self
获得2个参数?也许有更合理的方法来解决这个问题?
答案 0 :(得分:0)
当你说
时p.addChild(self)
Python会像这样调用addChild
addChild(p, self)
因为addChild
和setParent
是实例方法。因此,他们需要接受调用它们的当前对象作为第一个参数
def setParent(self, np):
...
def addChild(self, np):
...
self.children.append(nc) # You meant the children of the current instance
答案 1 :(得分:0)
你需要使self
成为类方法的第一个参数。
def setParent(self, np)
def addChild(self, nc)