我有一个变量,这个变量在实例中可能会或者不会得到值:
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进行比较,而不是使用内部变量的混乱。
getattr
函数。 - Some programmer dude