我有一个变量,它可能会或可能不会在实例中获得值:
class EC():
__init__(self, a=False):
...
if a: self.__var = ...
稍后我想检查实例中是否存在__var。因为在名称前添加__会将内部名称更改为_EC__var,所以检查代码变得有点混乱:
if ''.join(['_',self.__class__.__name__,'__name']) in self.__dict__: ...
上面的代码是否被认为是正常的?如果不是,首选的替代方案是什么?
我能想到的一种选择是无论如何都给__var一些价值,例如:
_no_value = object()
...
def __init__(self, a):
self.__var = _no_value
...
if a: self.__var = ...
所以稍后我可以将__var与_no_value进行比较,而不是与内部变量进行比较。