目次
単一の_保護された属性を使用します
ダブル__を使用して名前の書き換え(名前のマングリング)を実装する
パブリックプロパティは特別なタグを必要としません
いくつかの実用的な提案
ホームページ バックエンド開発 Python チュートリアル Pythonプライベートおよびパブリック属性条約

Pythonプライベートおよびパブリック属性条約

Jul 02, 2025 pm 03:06 PM

Pythonのプロパティアクセス制御は、必須の制限ではなく、命名規則を通じて実装されます。単一のUnderscore_を使用して、_Nameなどの保護された属性を表します。つまり、外部直接アクセスは奨励されず、アクセスできます。 double dounderscore__を使用して、__ageなどの名前書き換えを実装します。これは_class name__属性名として書き換えられ、偶発的な上書きを防ぐが、真にプライベートではありません。パブリック属性は特別なタグを必要とせず、名前を付けなくても直接アクセスできます。さらに、@Propertyを使用して読み取り専用アクセスを制御し、インターフェイスの目的を説明するためにドキュメントに依存し、命名スタイルを統合してコラボレーション効率を改善することをお勧めします。

Pythonプライベートおよびパブリック属性条約

Pythonでは、プロパティのアクセス制御は、一部の静的言語(JavaやCなど)ほど厳格ではありません。 Pythonは「Trust Programmers」の哲学を好むため、アクセスを強制するのではなく、命名規則を通じて公的および私的属性を区別します。

Pythonプライベートおよびパブリック属性条約

単一の_保護された属性を使用します

クラスでは、 _nameなどのプロパティまたはメソッドの前にある場合、それは「保護されている」ことを意味します。つまり、外部の手段で直接アクセスすることを意図していませんが、完全にプライベートではありません。

Pythonプライベートおよびパブリック属性条約
クラスユーザー:
    def __init __(self、name):
        self._name = name

user._nameにアクセスすることはできますが、これは他の開発者に「このプロパティは内部的に使用されているので、自由に変更しないでください」と伝えるコンベンションです。」

一般的な用途:保持したい属性に使用されますが、モジュールの内部およびサブクラスを継承する場合の外部変更を阻止します。

Pythonプライベートおよびパブリック属性条約

ダブル__を使用して名前の書き換え(名前のマングリング)を実装する

プロパティをより「プライベート」にしたい場合は、 __ageなどのプロパティ名の前に2つのアンダースコア__を追加できます。 Pythonは、この名前を自動的に書き直し、 _类名__属性名の形式になります。

クラスユーザー:
    def __init __(自己、年齢):
        自己.__年齢=年齢

この時点で、 user.__ageにアクセスしようとするときにエラーを報告しますが、実際にはuser._User__ageを介してアクセスできます。

注:これは実際にはプライベートではなく、偶発的な上書きやアクセスを防ぐだけです。その主な目的は、サブクラスの同じ名前の属性との競合を回避することです。


パブリックプロパティは特別なタグを必要としません

プロパティを公開可能にしたい場合は、たとえば次のように、名前を直接書くだけです。

クラスユーザー:
    def __init __(self、username):
        self.username = username

この書き込み方法は明確で明確であり、ほとんどの場合のニーズも満たしています。


いくつかの実用的な提案

  • 他の人にプロパティを自由に変更したくない場合は、最初に@propertyを使用して読み取り専用アクセスを提供します。
  • セキュリティ制御のために二重のアンダースコアに依存しないでください。データを非表示にするようには設計されていません。
  • ドキュメントとコメントを使用して、どのインターフェイスが外部に公開され、どのインターフェイスが内部実装の詳細であるかを説明します。
  • チーム開発では、統一された命名スタイルが誤解を減らすのに役立ちます。

一般に、Pythonの公的および私有地は、厳格なアクセス制御メカニズムというよりもコラボレーション方法です。これらの規則を理解することで、コードをより明確かつ容易に書くことができます。

以上がPythonプライベートおよびパブリック属性条約の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ホットトピック

完成したPython Blockbuster Online Viewing Entrant Python無料完成ウェブサイトコレクション 完成したPython Blockbuster Online Viewing Entrant Python無料完成ウェブサイトコレクション Jul 23, 2025 pm 12:36 PM

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

Python Run Shellコマンドの例 Python Run Shellコマンドの例 Jul 26, 2025 am 07:50 AM

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

量子機械学習用のPython 量子機械学習用のPython Jul 21, 2025 am 02:48 AM

Quantum Machine Learning(QML)を開始するには、優先ツールがPythonであり、Pennylane、Qiskit、Tensorflowquantum、Pytorchquantumなどのライブラリをインストールする必要があります。次に、Pennylaneを使用して量子ニューラルネットワークを構築するなど、例を実行してプロセスに慣れます。次に、データセットの準備、データエンコード、パラメトリック量子回路の構築、古典的なオプティマイザートレーニングなどの手順に従ってモデルを実装します。実際の戦闘では、最初から複雑なモデルを追求したり、ハードウェアの制限に注意を払ったり、ハイブリッドモデル構造を採用したり、開発をフォローアップするための最新のドキュメントと公式文書を継続的に参照することを避ける必要があります。

Python Seabornジョイントプロットの例 Python Seabornジョイントプロットの例 Jul 26, 2025 am 08:11 AM

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

Pythonの文字列のリストに参加する方法 Pythonの文字列のリストに参加する方法 Jul 18, 2025 am 02:15 AM

Pythonでは、Join()メソッドを使用して文字列をマージするときに次の点に注意する必要があります。1。str.join()メソッドを使用し、前の文字列は呼び出し時にリンカーとして使用され、ブラケットの反復オブジェクトには接続する文字列が含まれています。 2。リスト内の要素がすべて文字列であることを確認し、非弦タイプが含まれている場合は、最初に変換する必要があります。 3.ネストされたリストを処理する場合、接続する前に構造を平らにする必要があります。

Python Webスクレイピングチュートリアル Python Webスクレイピングチュートリアル Jul 21, 2025 am 02:39 AM

Python Web Crawlersをマスターするには、3つのコアステップを把握する必要があります。1。リクエストを使用してリクエストを開始し、メソッドを取得してWebページのコンテンツを取得し、ヘッダーの設定に注意を払い、例外を処理し、robots.txtを遵守します。 2。美しいソープまたはXPathを使用してデータを抽出します。前者は単純な解析に適していますが、後者はより柔軟で複雑な構造に適しています。 3.セレンを使用して、動的読み込みコンテンツのブラウザ操作をシミュレートします。速度は遅いですが、複雑なページに対処できます。また、効率を向上させるために、WebサイトAPIインターフェイスを見つけることもできます。

パイソンリストへの変換の例 パイソンリストへの変換の例 Jul 26, 2025 am 08:00 AM

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

PythonはSQL Server Pyodbcの例に接続します PythonはSQL Server Pyodbcの例に接続します Jul 30, 2025 am 02:53 AM

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

See all articles