インスタンスで値を取得する場合と取得しない場合がある変数があります。
class EC():
__init__(self, a=False):
...
if a: self.__var = ...
後で、インスタンスに__varが存在するかどうかを確認したいと思います。名前の先頭に__を追加すると、内部名が_EC__varに変更されるため、チェック コードが少し面倒になります。
if ''.join(['_',self.__class__.__name__,'__name']) in self.__dict__: ...
上記のコードは正常と見なされますか? そうでない場合、好ましい代替手段は何ですか?
私が考えることができる 1 つのオプションは、とにかく__varに何らかの値を与えることです。次に例を示します。
_no_value = object()
...
def __init__(self, a):
self.__var = _no_value
...
if a: self.__var = ...
そのため、後で内部変数を混乱させる代わりに、__ varを_no_valueと比較できます。