実際の用語では(実質的に)、pythonにはpythonのプライベートメンバー変数と呼ばれるものはありません。 しかし、最初に2つの下線(__)を追加すると、変数またはメソッドがprivateになります。この概念を例で理解してみましょう−
privateVar1.py上記のプログラムでは、__privMethはプライベートメソッドであり、__privateVarはプライベート変数です。 ここで出力を見てみましょう−
Output
Private Variable value: 27Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMethAttributeError: 'myClass' object has no attribute '__privateMeth'
上記の出力から、クラス”myClass”の外では、privateメソッドとprivate変数にアクセスできないことがわかります。 ただし、クラス(myClass)内では、プライベート変数にアクセスできます。 のこんにちは()メソッドは、__privateVar変数にアクセスできる(上記のとおり:”民間値:27″).したがって、上記の例から、クラス内のすべての変数とメソッドがメソッドによって公開されていることがわかります。 データメンバをprivateとして宣言すると、クラスの側でのみアクセスでき、クラスの外ではアクセスできないことを意味します。 変数またはメソッドを非公開にする手法は、データマングリングと呼ばれます。 __Spam形式の識別子(先頭のアンダースコアが少なくとも2つ、末尾のアンダースコアが最大1つ)は、テキスト上では_classname__spamに置き換えられます。classnameは現在のクラス名で、先頭のアンダースコアが取り除かれています。 このマングリングは、クラスの定義内で発生する限り、識別子の構文上の位置に関係なく行われます。
ダブルアンダースコア名は、代わりにサブクラスによる偶発的な上書きを避けるためのものです。
19-Feb-2019 16:59:04に公開
広告
広告
広告