此代碼:不帶參數的類方法產生類型錯誤
class testclass:
def __init__(self,x,y):
self.x = x
self.y = y
self.test()
def test():
print('test')
if __name__ == '__main__':
x = testclass(2,3)
產量:
Error:
TypeError:test() takes no argument(1 given)
我打電話不帶任何參數的測試功能,爲什麼錯誤說,我已經給了一個?
我錯過了這個答案中** bound **和** unbound **方法之間的區別(在所有這些方法中直到現在)。這就是所有不同之處。當調用未綁定的方法時,你需要明確地傳遞'self',綁定的(通常情況下)它隱式地發生。 –
@LukasGraf我將綁定方法視爲實現自我自動傳遞的機制,而不是核心概念。當然,他們遠遠超出了似乎適合這個問題的水平。實際上,從Python3中刪除了未綁定的方法是一個糟糕的想法(它將綁定的方法僅僅作爲記憶'self'以便將其傳遞給函數的機制),而Python的Python語法則提示Python3。 – Ben