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

Python変数で二重アンダースコアプレフィックスは何をしますか?


二重アンダースコアプレフィックス

Pythonでは、属性名の前に二重アンダースコアを使用します。つまり、属性の名前の前に__を使用します。これらの属性は、外部から直接アクセスしたり表示したりすることはできません。二重下線は、属性の名前をマングルします。ただし、その変数には、トリッキーな構文を使用してアクセスできますが、通常、そうすることはお勧めできません。完全にプライベートな変数には、二重アンダースコアが使用されます。

Pythonのドキュメントによると

クラスをサブクラス化することを目的としていて、サブクラスに使用させたくない属性がある場合は、先頭に2つのアンダースコアを付け、末尾にアンダースコアを付けないように名前を付けることを検討してください。これにより、Pythonの名前マングリングアルゴリズムが呼び出され、クラスの名前が属性名にマングルされます。これにより、サブクラスに同じ名前の属性が誤って含まれている場合に、属性名の衝突を回避できます。

以下のコードは、二重アンダースコアの使用を示しています。

class MyClass:
    __hiddenVar = 0
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject.__hiddenVar)
出力
3
Traceback (most recent call last):
11
  File "C:/Users/TutorialsPoint1/.PyCharmCE2017.2/config/scratches/scratch_1.py", line 12, in <module>
    print (myObject.__hiddenVar)
AttributeError: MyClass instance has no attribute '__hiddenVar'

上記のプログラムでは、オブジェクトを使用してクラス外の隠れた変数にアクセスしようとしましたが、例外がスローされました。


  1. 印刷>>はPythonで何をしますか?

    は、標準のprintステートメントを拡張して、デフォルトのsys.stdoutの代わりに、ファイルのようなオブジェクトに印刷できるようにする構文です。そのため、ファイルに直接印刷するために使用できます。 例 たとえば、my_fileというファイルを開いたら、次のコマンドを使用してそのファイルに書き込むことができます。  >>> my_file =open("my_file") >>> print >>my_file, "Hello World" これにより、my_fileに「HelloWorl

  2. %はPythonの文字列に何をしますか?

    %は、文字列フォーマット演算子または補間演算子です。 formatの%値(formatは文字列)を指定すると、formatの%変換仕様は、0個以上の値の要素に置き換えられます。この効果は、C言語でsprintf()を使用する場合と同様です。たとえば、 >>> lang = "Python" >>> print "%s is awesome!" % lang Python is awesome この表記で数値をフォーマットすることもできます。たとえば、 >>> cost = 128.527 >&