我有兩個類,在第二個類中我定義了一個方法,該方法從第一個類中實體化一個物件,為其一個屬性賦值,然后列印出來。
問題是,當我使用:
呼叫該函式時test.Pprint(5)
我得到的錯誤。
TypeError: Pprint()缺少1必要的位置引數。'x'。
我的代碼:
class node()。
def __init__(self, test):
self.test = test
class test()。
def Pprint(self, x)。
rootnode = node(x)
print(rootnode.test)
當我洗掉關鍵字self時,一切都按計劃進行。據我所知,self不應該被視為一個引數。有什么問題嗎?
uj5u.com熱心網友回復:
這就是Python的魔力。當從類物件中呼叫test.Pprint(x)時,它是一個需要兩個引數的函式。當從一個實體中呼叫時,test().Pprint(x) python將其轉換為一個方法,并自動添加一個實體的參考作為第一個引數。在你的例子中,Pprint并沒有使用類的任何功能,所以它可以是一個靜態方法。
class test。
@staticmethod: test.
def Pprint(x)。
rootnode = node(x)
列印(rootnode.test)
現在它可以從類或實體中作業
test.Pprint(x)
t = test()
t.Pprint(x)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328107.html
標籤:
