![](/img/trans.png)
[英]Python - class object initialization within function
[英]Passing self to function within initialization of object in python
我有一個類,代表一個樹狀結構的節點,該節點存儲其父節點和任何子節點
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
得到兩個論點? 也許有一種更合理的方法來解決這個問題?
當你說
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
您需要將self
作為類方法的第一個參數。
def setParent(self, np)
def addChild(self, nc)
您也絕對應該閱讀以下內容: http : //docs.python.org/2/tutorial/classes.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.