Pythonのselfの使い方を詳しく、または常にプロンプトを表示します。TypeError: add() missing 1 required positional argument: 'self' 問題は解決されました。
最近、Pythonの勉強をしていて、Web上で他の人が書いたサンプルやオープンソースプロジェクトを見ていて、ある問題に気づきました。クラスやクラスメソッドを呼び出すときに、必ず渡すべきパラメータが足りないというプロンプトが表示されるのです。私自身は以下のような簡単な類似の問題を書きました。
class Add():
def add(self):
return None
if __name__ == '__main__':
print(Add.add())
<イグ
この時点で、add (self) から self を実際に削除してみると、システムからエラーが報告されることがわかります。
今度は引き続きadd(str1)に修正し、呼び出されたときに文字列を渡しますが、これも問題ありません
実はこの書き方は問題で、最初にprint(Add.add('aaa'))と書いても実際にはクラスはインスタンス化されていないので、使うときにprint(Add().add('aaa'))と書いて、その後もprint(Add().add('aaa'))と修正して、修正後に実行したらまたエラーが報告されることに気がつくのです
ヒントは1つの引数を取るが、2つの引数を渡す。なぜなら、def add(str1) は def add(self) と等価であり、順番に自身のインスタンスを表すからである。しかし、add('aaa')の呼び出しでは、彼に別の引数を渡しており、これはadd('self', 'aaa')と同等なので、エラーも報告される。そして、それを修正し続け、正確に正しい方法で記述してください。
つまり、要約すると、関数やクラスを定義するときは、add(self, str, str1) のようにデフォルトで第一引数に self を追加し、クラスを呼ぶときは Add().add('aaa') のように Add.add('aaa') を直接呼ばずにまずインスタンス化するべきなのである。
selfの使用方法の詳細については、以下のようにまとめていますので、アクセスしてみてください。 https://blog.csdn.net/CLHugh/article/details/75000104 踏み込んだ内容を深く理解することができます。
関連
-
解決済みお客様のCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
pythonBug:AttributeError: タイプオブジェクト 'datetime.datetime' は属性 'datetime' を持たない。
-
SyntaxError: 構文が無効です。
-
gensim: queue という名前のモジュールがありません。
-
Python3 xlsxwriterモジュールのインストール
-
TypeError: 'builtin_function_or_method' オブジェクトは反復可能ではありません。
-
'dict_items' オブジェクトは添え字を付けることができません。
-
Pythonのsum関数でTypeError: unsupported operand type(s) for +: 'int' and 'list' エラーを解決する。
-
Python3 はエンコーディングの問題を解決します: UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position
-
Pythonソケットプログラミング [WinError 10061] ターゲットコンピュータがアクティブに拒否しているため、接続できない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
チェックされていないruntime.lastError: 接続を確立できませんでした。受信側が存在しません。
-
[Django] CSRF 検証に失敗しました。
-
Django リクエストボディの属性を変更する AttributeError: 属性を設定できない
-
Python3ダウンロードファイルです。AttributeError:モジュール 'urllib' には 'request' という属性がありません。
-
Python ModuleNotFoundError: ConfigParser' という名前のモジュールはありません。
-
Python27 PILソリューションという名前のモジュールがない
-
ImportError: scipy'という名前のモジュールがありません。
-
pythonフレームワーク Scrapyエラー TypeError: 'float' object is not iterable Solve
-
[コード】pygame 学習
-
Pythonです。AttributeError: module 'numpy' has no attribute 'dtype' 問題が解決されました。