匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

pythonにてクラスのメソッドの引数にselfを指定しない時

のエラーが SyntaxError: invalid syntax ではなくて
TypeError: メソッド() takes 0 positional arguments but 1 was given
であるのは何か理由があるのでしょうか
引数に何も指定してなくてもbut 1 was givenなのはおかしくないですか?
当方pythonというかプログラミング自体初心者です

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/10/14 10:53:08
  • 終了:2016/10/26 11:52:01

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2016/10/14 14:56:46

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 は出ません

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません