簡體   English   中英

在python中的對象初始化內將self傳遞給函數

[英]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)

因為addChildsetParent是實例方法。 因此,他們需要接受在其上被調用的當前對象作為第一個參數,

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM