質問: pythonにてクラスのメソッドの引数にselfを指定しない時 のエラーが 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 は出ません