python単下線/二重下線まとめ


Pythonは下線を変数接頭辞と接尾辞として特殊変数を指定する
_xxx:変数を保護します.クラスオブジェクトとサブクラスオブジェクトのみがこれらの変数にアクセスできることを意味します(クラスの外部で直接変更することはできるだけ避けます).
__xxx__ :システム定義名
__xxx:クラス内のプライベート変数名のコアスタイル:下線を変数名の開始として使用しないでください.下線は解釈器に特別な意味を持ち、組み込み識別子で使用される記号であるため、プログラマは変数名の開始として下線を使用しないことをお勧めします.
一般に、変数名_xxxは「プライベート」とみなされ、モジュールやクラス外では使用できません(使用可能ですが、一般的には使用しません).変数がプライベートの場合、_xxxは変数を表すのに良い習慣です.変数名_のためxxx__Pythonには特別な意味があり、普通の変数にはこのような命名スタイルを避けなければならない.
「単一下線」で始まるメンバー変数を保護変数と呼びます.これは、クラスオブジェクトとサブクラスオブジェクトだけがこれらの変数にアクセスできることを意味します.
「二重下線」は、クラスオブジェクトのみがアクセスでき、サブクラスオブジェクトもこのデータにアクセスできないことを意味するプライベートメンバーで始まります.単一下線で始まる(_foo)は、直接アクセスできないクラス属性を表し、クラスが提供するインタフェースでアクセスする必要があり、「from xxx import*」でインポートすることはできません.
二重下線で始まる(_foo)はクラスのプライベートメンバーを表します.
二重下線で始まる(_foo_)pythonの特殊なメソッド専用のIDを表します.init__()クラスを表すコンストラクション関数.
次に、すべてのシステム定義のプロパティと方法をまとめ、まず、プロパティを保持します:>>Class 1._doc__ # タイプヘルプ情報'Class 1 Doc.' 
>>> Class1.__name__ # タイプ名'Class 1'
>>> Class1.__module__ # タイプが存在するモジュール'_main__' 
>>> Class1.__bases__ # タイプが継承するベースクラス(,)
>>> Class1.__dict__ # タイプ辞書.すべてのタイプのメンバー情報を格納します. 
>>> Class1().__class__ # を選択します.
>>> Class1().__module__ # インスタンスタイプが存在するモジュール'_main__' 
>>> Class1().__dict__ # すべてのインスタンスメンバー情報を格納するオブジェクト辞書.{'i': 1234}
プロパティにアクセスするには、次の関数を使用します.
  getattr(obj, name[, default]) :        。
  hasattr(obj,name) :           。
  setattr(obj,name,value) :       。       ,        。
  delattr(obj, name) :     。
  hasattr(emp1, 'age')    #      'age'      True。
  getattr(emp1, 'age')    #    'age'     
  setattr(emp1, 'age', 8) #      'age'    8
  delattr(empl, 'age')    #      'age'