Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのプライベート変数


実際には(実際には)、Pythonにはプライベートメンバー変数と呼ばれるものはありません。ただし、最初に2つの下線(__)を追加すると、変数またはメソッドがプライベートになります。これは、ほとんどのPythonコードで使用される規則です。

例を通してこの概念を理解しましょう-

privateVar1.py

class myClass:
   __privateVar = 27;
   def __privMeth(self):
      print("I'm inside class myClass")
   def hello(self):
      print("Private Variable value: ",myClass.__privateVar)
foo = myClass()
foo.hello()
foo.__privateMeth

上記のプログラムでは、__ privMethはプライベートメソッドであり、__privateVarはプライベート変数です。今すぐ出力を見てみましょう-

出力

Private Variable value: 27
Traceback (most recent call last):
   File "C:/Python/Python361/privateVar1.py", line 12, in <module>
   foo.__privateMeth
AttributeError: 'myClass' object has no attribute '__privateMeth'

上記の出力から、クラス「myClass」の外部では、プライベートメソッドとプライベート変数にアクセスできないことがわかります。ただし、クラス(myClass)内では、プライベート変数にアクセスできます。 hello()メソッドでは、__ privateVar変数にアクセスできます(上記のように:「PrivateVariable value:27」)。

したがって、上記の例から、クラス内のすべての変数とメソッドがメソッドによって公開されていることがわかります。データメンバーをプライベートとして宣言すると、クラス内でのみアクセス可能であり、クラス外ではアクセスできないことを意味します。変数またはメソッドをプライベートにする手法は、データマングリングと呼ばれます。 __ spamの形式の識別子 (少なくとも2つの先頭のアンダースコア、多くても1つの末尾のアンダースコア)は、テキストで _classname__spamに置き換えられます。 、ここでクラス名 は、先頭の下線が削除された現在のクラス名です。このマングリングは、クラスの定義内で発生する限り、識別子の構文上の位置に関係なく行われます。

二重アンダースコア名は、代わりにサブクラスによる誤ったオーバーライドを回避するためのものです。


  1. Pythonで変数名を文字列として取得するにはどうすればよいですか?

    変数は実際にはオブジェクトへの名前マッピングであるため、これは実際にはPythonで行うことではありません。 Pythonで正規名を持つオブジェクトは、モジュール、関数、クラスのみです。もちろん、関数またはクラスが定義された後、またはモジュールがインポートされた後、この正規名が任意の名前空間で意味を持つという保証はありません。これらの名前は、オブジェクトの作成後に変更することもできるため、必ずしも特に信頼できるとは限りません。 変数の名前を文字列として取得する方法はまだあります。ただし、変数名を抽出するには、変数名の文字列を知っている必要があります。また、これは変数名の逆検索です。したがって

  2. PowerShellの変数

    コンピュータサイエンス(およびカジュアルコンピューティング)では、変数は、後で使用するために任意の情報を保持するメモリ内の場所です。つまり、データを出し入れするための一時的なストレージコンテナです。 Bashシェルでは、そのデータは単語(文字列)にすることができます 、コンピュータ用語で)または数値(整数 。 これまで(故意に)コンピューターで変数を使用したことはないかもしれませんが、おそらく人生の別の領域で変数を使用したことがあります。 「givemethat」や「lookatthis」などと言うときは、文法変数を使用しています(代名詞 )。 「これ」と「それ」の意味は、あなたが頭の中で描