Pythonではselfは冗長ですか?
Jun 14, 2019 pm 04:18 PM
python
self はクラスではなく、クラスのインスタンスを表します。
class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt()
ログイン後にコピー
<__main__.Test object at 0x000000000284E080> <class '__main__.Test'>
ログイン後にコピー
self と書くことはできませんか?
Python インタプリタ内で t.prt() を呼び出すと、Python は実際には Test.prt(t ) として解釈されます。つまり、self をクラスのインスタンスに置き換えます。 上記の t.prt() 行を書き直すと、実行後の実際の結果はまったく同じになります。 実は、定義時に self を省略できないことは部分的に説明されていますclass Test: def prt(): print(self) t = Test() t.prt()
ログイン後にコピー
Traceback (most recent call last): File "h.py", line 6, in <module> t.prt() TypeError: prt() takes 0 positional arguments but 1 was given
ログイン後にコピー
class Test: def prt(): print(__class__) Test.prt()
ログイン後にコピー
<class '__main__.Test'>
ログイン後にコピー
class Parent: def pprt(self): print(self) class Child(Parent): def cprt(self): print(self) c = Child() c.cprt() c.pprt() p = Parent() p.pprt()
ログイン後にコピー
<__main__.Child object at 0x0000000002A47080> <__main__.Child object at 0x0000000002A47080> <__main__.Parent object at 0x0000000002A47240>
ログイン後にコピー
説明:
いつ実行されるかを理解してはいけません。 c.cprt() を実行中です。質問は、Child クラスのインスタンスを指します。 ただし、c.pprt() を実行すると、Child.pprt(c) と同等になるため、self は依然として Child クラスのインスタンスを参照します。pprt() メソッドは self 内で定義されていないため、 そこで、継承ツリーを調べたところ、pprt() メソッドが親クラス Parent に定義されていることがわかり、このメソッドは正常に呼び出されます。概要
self は定義時に定義する必要がありますが、呼び出されたときに自動的に渡されます。 self の名前は規定されていませんが、規則に従って self を使用するのが最善です。self は、呼び出し時に常にクラスのインスタンスを参照します。以上がPythonではselfは冗長ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7299
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する
