為什么這個(gè)腳本需要“self”作為第 3 行 mssg() 的參數(shù)?PyCharm 在第 3 行將“self”標(biāo)記為,預(yù)期類(lèi)型為“Another”,卻得到了“Main”。這個(gè)警告對(duì)我來(lái)說(shuō)很有意義(盡管代碼有效)。當(dāng)省略“self”時(shí),Python 會(huì)拋出錯(cuò)誤:類(lèi)型錯(cuò)誤:mssg() 缺少 1 個(gè)必需的位置參數(shù):'self'class Main(): def __init__(self): print(Another.mssg(self))class Another(): def __init__(self): pass def mssg(self): return "Hello World"_foo = Main()根據(jù)您的指導(dǎo),以下是防止 TypeError 的三種不同方法:class Main(): def __init__(self): print(Another.mssg('asdasdsa')) print(Another().mssg()) print(_bar.mssg())class Another(): def __init__(self): pass def mssg(self): return "Hello World"_bar = Another()_foo = Main()
1 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您使用Another.mssg(self)
,那么您正在調(diào)用一個(gè)類(lèi)方法,這就是為什么self
將其作為參數(shù),并且您需要僅使用一個(gè)參數(shù)來(lái)調(diào)用該函數(shù)。嘗試一下print(Another.mssg('asdasdsa'))
,你會(huì)發(fā)現(xiàn)它有效。
如果您的意圖是用作mssg(self)
實(shí)例方法,那么您應(yīng)該使用調(diào)用它print(Another().mssg())
,這樣您就創(chuàng)建了實(shí)例,然后調(diào)用它的方法。
添加回答
舉報(bào)
0/150
提交
取消