この記事では、Python のアクセス制限がプライベートかパブリックかについて紹介します (例付き)。一定の参考値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
1. 知識ポイント
モジュールでは、多くの関数と変数を定義することがあります。しかし、一部の関数と変数は他の人が使用できるようにする必要があり、また一部の関数と変数はモジュール内でのみ使用できるようにする必要があるので、?
関数と変数がパブリックかプライベートかを定義することで、この目標を達成できます。
Python では、これはアンダースコア「_」プレフィックスによって実現されます。
パブリック: パブリック。通常の関数名や変数名はこのタイプであり、直接参照できます。たとえば、変数 abc、PI など;
特殊変数: 形式は __xxx__ で、__ で始まり __ で終わります。直接参照できますが、特殊な用途があります。たとえば、__author__ と __name__ は特殊変数です。一般に、自分で定義する変数にはこのタイプの変数名を使用しないでください。
private: プライベート、非公開、__xxx_ および __xxx に似た形式 (__num など)。
は直接参照しないでください。内部からのみアクセス可能であり、外部からはアクセスできません。
オブジェクトの内部状態は自由に変更できないため、アクセス制限の保護によりコードはより堅牢になります。
2. 例
Class クラス内には属性とメソッドを含めることができます。外部コードは、インスタンス変数メソッドを直接呼び出して、内部の複雑なロジックを隠すことによってデータを操作できます。ただし、外部コードは依然としてインスタンスのプロパティを自由に変更できます。例:
>>>b.score 99 >>>b.score = 59 >>>b.score 59
内部属性が外部からアクセスされないようにするには、次のように属性名の前に 2 つのアンダースコア「__」を追加してプライベート変数に変換します。
class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def print_score(self): print('%s: %s' % (self.__name, self.__score))Try to 外部からプロパティにアクセスすると、プライベート変数には外部からアクセスできないため、エラーが報告されます。
>>> bart = Student('Bart Simpson', 98) >>> bart.__name # 私有变量:不能被外部访问 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Student' object has no attribute '__name'</module></stdin>しかし、外部コードが名前とスコアを取得したい場合はどうなるでしょうか?
属性を取得するメソッドを Student クラスに追加します: get_name() および get_score() (次のように):
class Student(object): ... def get_name(self): return self.__name def get_score(self): return self.__score外部コードがスコアを変更した場合はどうなりますか? Student クラスに設定メソッドを追加できます:
set_score():
... def set_score(self, score): # 避免传入无效参数 if 0 では、二重アンダースコアで始まるプライベート インスタンス変数は外部からアクセスできないようにする必要がありますか?あまり。 <p>Python インタープリターは外部で __name 変数を _Student__name に変更するため、__name に直接アクセスすることはできませんが、それでも _Student__name を通じて __name 変数にアクセスできます。 <br></p><pre class="brush:php;toolbar:false">>>> bart = Student('Bart Simpson', 98) >>> bart.get_name() 'Bart Simpson' >>> bart.__name = 'New Name' # 给bart新增的__name变量 >>> bart.__name # !与class内部的__name变量不是一个变量! 'New Name' >>> bart.get_name() # get_name()内部返回self.__name (_Student__name) 'Bart Simpson'表面上、外部コードは __name 変数を「正常に」設定していますが、実際には、この __name 変数とクラス内の __name 変数は同じ変数ではありません。内部 __name 変数は Python インタープリターによって自動的に _Student__name に変更され、外部コードによって新しい __name 変数が bart に追加されます。 つまり、Python にはプライベート関数や変数へのアクセスを完全に制限する方法がないため、「直接参照できない」わけではありません。プログラミングの習慣から、プライベート関数や変数は参照すべきではありません。それらは何の役に立つのでしょうか?
例:
def _private_1 (name): return 'hello,%s ' % name def _private_2 (name): return 'hi , %s ' % name def greeting(name): if len(name) > 3: return _private_1 (name) else: return _private_2 (name)greeting() 関数はモジュール内で公開されますが、内部ロジックはプライベート関数を使用して隠蔽されます。このようにして、greeting() 関数を呼び出す際に、内部プライベート関数の詳細を気にする必要がなくなります。
これは、コードのカプセル化と抽象化の非常に便利な方法です。つまり、外部から参照する必要のないすべての関数はプライベートとして定義され、外部から参照する必要がある関数のみがパブリックとして定義されます。 。
3. 完全なコードclass Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name, self.__score))
def get_name(self):
return self.__name
def get_score(self):
return self.__score
def set_score(self, score):
# 避免传入无效参数
if 0 3:
return _private_1 (name)
else:
return _private_2 (name)
以上がPython のアクセス制限がプライベートかパブリックかについての概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
