のエラーが SyntaxError: invalid syntax ではなくて
TypeError: メソッド() takes 0 positional arguments but 1 was given
であるのは何か理由があるのでしょうか
引数に何も指定してなくてもbut 1 was givenなのはおかしくないですか?
当方pythonというかプログラミング自体初心者です
pythonの場合メソッドには
の3種類あります.そしてインスタンスメソッドの場合は self が必須です
例えば
Xというクラスがあってそれが fooというメソッドを持っている場合は
hoge = X()
hoge.foo()
と書くと
hooはインスタンスメソッドと解釈され
X.foo(hoge) が実行されます.この時 hoge を受け取る変数が self です
ですから self がないと,hogeを受け取れないので
takes 0 positional arguments but 1 was given
というエラーが出ます.
X.foo() と呼べばインスタンスメソッドと解釈されないので
selfは不要になります
このように実行時に解釈が切り替わるので
文法としては正しいので SyntaxError: invalid syntax は出ません
コメント(0件)