人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ