Pythonで「__Str__`メソッドをオーバーライドする方法
__STR__は、オブジェクトの読み取り可能な文字列表現を提供するために書き換える必要があります。 1.デフォルトでは、クラスインスタンスはメモリアドレスとして印刷されますが、直感的ではありません。 2。フォーマットされた文字列を書き換えて返すときに__STR__メソッドを定義します。 3. __STR__はユーザー向けであり、__REPR__は開発者向けであることに注意してください。 4.動的スプライシング属性値など、出力形式を柔軟に調整できます。たとえば、Personクラスを書き直した後、人(name = Alice、Age = 30)やAliceなどの意味のある情報を出力できます。
Pythonでは、 __str__
は、オブジェクトの「非公式」または読みやすいフレンドリーな文字列表現を定義する特別なクラス方法です。 Pythonはprint()
またはstr()
関数を使用してオブジェクトに作用すると、このメソッドを自動的に呼び出します。カスタムクラスの出力のインスタンスをより明確で意味のある情報のインスタンスにしたい場合は、それをオーバーライドする必要があります。

以下は、自分のクラスで__str__
メソッドを正しく上書きする方法に関するいくつかの重要なポイントと提案を示します。

なぜあなたは__str__
必要があるのですか
デフォルトでは、 __str__
をオーバーライドしない場合、クラスのインスタンスを印刷するときに<__main__.myclass object at></__main__.myclass>
ような情報のみが表示されます。これはデバッグに少し役立つかもしれませんが、直感的ではありません。
例えば:
インスタンスp = Person("Alice", 30)
を作成するPerson
クラスがあるとします。一連のメモリアドレスの代わりに、 print(p)
Person(name=Alice, age=30)
に類似した情報を出力する必要があります。

そのため、 __str__
を書き換える必要があります - クラス出力をより意味のある文字列にします。
__str__
を正しく書き直す方法
クラスの__str__
メソッドを定義し、文字列を返します。これが基本構造です:
クラスの人: def __init __(自己、名前、年齢): self.name = name self.age = age def __str __(self): f "person(name = {self.name}、age = {self.age})"
このように、実行するとき:
p =人( "アリス"、30) 印刷(p)
出力します:
人(名前=アリス、年齢= 30)
注意すべきいくつかのこと:
-
__str__
文字列タイプを返す必要があります。 - それは
self
議論として受け入れます。 - 開発
__str__
にとってより詳細__repr__
文字列表現です。
__repr__
との違い
どちらもオブジェクトの文字列表現を制御できますが、それらの用途は異なります。
-
__str__
:ユーザー指向であり、読みやすさを強調しています。 -
__repr__
:開発者の場合、通常、デバッグに使用され、オブジェクトの正確な復元が必要です。
たとえば、このような__repr__
を定義できます。
def __repr __(self): futr f "person( '{self.name}'、{self.age})"
このようにして、インタラクティブな環境で変数名を入力すると、より明確な結果も表示されます。
実際のアプリケーションのヒント
さまざまなニーズに応じて、出力形式を調整する場合があります。例えば:
- 出力名と年齢のみ、接頭辞
"Person"
は必要ありません。 - いくつかの固定テンプレートに従って出力をフォーマットします。
- エラーを回避するために属性が存在するかどうかに基づいて判断を下します。
簡単な例を見てみましょう:
def __str __(self): return f "{self.name}は{self.age}齢です。"
または、出力する前にいくつかのフィールドが存在する必要があることを確認する必要があります。
def __str __(self): parts = [] hasattr(self、 'name')の場合: parts.append(f "name = {self.name}") Hasattr(self、 'age')の場合: parts.append(f "age = {self.age}") "person(" "、" .join(parts) ")"
このようにして、特定の属性が欠落している場合でも、エラーはありません。
基本的にそれだけです。書き換え__str__
簡単に思えますが、実際のプロジェクトで合理的に使用できる場合、デバッグとログ出力がよりフレンドリーになります。
以上がPythonで「__Str__`メソッドをオーバーライドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

この記事では、いくつかのトップPython「完成した」プロジェクトWebサイトと、高レベルの「大ヒット作「学習リソースポータル」が選択されています。開発のインスピレーション、観察、学習のマスターレベルのソースコードを探している場合でも、実用的な機能を体系的に改善している場合でも、これらのプラットフォームは見逃せず、Pythonマスターに迅速に成長するのに役立ちます。

subprocess.run()を使用して、シェルコマンドを安全に実行し、出力をキャプチャします。注入リスクを避けるために、リストのパラメーターを渡すことをお勧めします。 2。シェル特性が必要な場合は、シェル= trueを設定できますが、コマンドインジェクションに注意してください。 3. subprocess.popenを使用して、リアルタイム出力処理を実現します。 4。Check = COMMATが失敗したときに例外をスローするためにtrueを設定します。 5.単純なシナリオで直接チェーンを呼び出して出力を取得できます。 os.system()または非推奨モジュールの使用を避けるために、日常生活の中でsubprocess.run()を優先する必要があります。上記の方法は、Pythonでシェルコマンドを実行するコアの使用を上書きします。

Seabornのジョイントプロットを使用して、2つの変数間の関係と分布をすばやく視覚化します。 2。基本的な散布図は、sns.jointplot(data = tips、x = "total_bill"、y = "tip"、dind = "scatter")によって実装され、中心は散布図であり、ヒストグラムは上部と右側と右側に表示されます。 3.回帰線と密度情報をdind = "reg"に追加し、marminal_kwsを組み合わせてエッジプロットスタイルを設定します。 4。データ量が大きい場合は、「ヘックス」を使用することをお勧めします。

httpx.asyncclientを使用して、非同期httpリクエストを効率的に開始します。 1.基本的なGETリクエストは、asyncwithを介してクライアントを管理し、awaitclient.getを使用して非ブロッキングリクエストを開始します。 2。asyncio.gatherを組み合わせてasyncio.gatherを組み合わせると、パフォーマンスが大幅に向上する可能性があり、合計時間は最も遅いリクエストに等しくなります。 3.カスタムヘッダー、認証、base_url、タイムアウト設定をサポートします。 4。投稿リクエストを送信してJSONデータを伝達できます。 5.同期非同期コードの混合を避けるために注意してください。プロキシサポートは、クローラーやAPI集約、その他のシナリオに適したバックエンド互換性に注意を払う必要があります。

文字列リストは、 '' .join(words)などのJoIn()メソッドとマージして、「Helloworldfrompython」を取得できます。 2。NUMBERリストは、参加する前にMAP(STR、数字)または[STR(x)forxinNumbers]を備えた文字列に変換する必要があります。 3.任意のタイプリストは、デバッグに適したブラケットと引用符のある文字列に直接変換できます。 4。カスタム形式は、 '|' .join(f "[{item}]" foriteminitems)output "[a] | [などのjoin()と組み合わせたジェネレーター式によって実装できます。

Pythoncanbeoptimizedformemory-boundoperationsは、ヘッドゲネレーター、EfficientDataStructures、およびManagingObjectlifetimes.first、Usegeneratoratoratoratoratoratoraturatussを使用していることを確認してください

Pyodbcのインストール:Pipinstallpyodbcコマンドを使用してライブラリをインストールします。 2.接続sqlserver:pyodbc.connect()メソッドを介して、ドライバー、サーバー、データベース、uid/pwdまたはtrusted_connectionを含む接続文字列を使用し、それぞれSQL認証またはWindows認証をサポートします。 3.インストールされているドライバーを確認します:pyodbc.drivers()を実行し、「sqlserver」を含むドライバー名をフィルタリングして、「sqlserverのodbcdriver17」などの正しいドライバー名が使用されるようにします。 4.接続文字列の重要なパラメーター

shutil.rmtree()は、ディレクトリツリー全体を再帰的に削除するPythonの関数です。指定されたフォルダーとすべてのコンテンツを削除できます。 1.基本的な使用法:shutil.rmtree(PATH)を使用してディレクトリを削除すると、FilenotFounderror、PermissionError、その他の例外を処理する必要があります。 2。実用的なアプリケーション:一時的なデータやキャッシュディレクトリなど、サブディレクトリとファイルを1回クリックして含むフォルダーをクリアできます。 3。注:削除操作は復元されません。 FilenotFounderrorは、パスが存在しない場合に投げられます。許可またはファイル職業のために失敗する可能性があります。 4.オプションのパラメーター:INGRORE_ERRORS = trueでエラーを無視できます
