【发布时间】:2020-03-13 13:32:31
【问题描述】:
我有一个变量,它可能会或可能不会在实例中获得值:
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函数。 -
我试过了,它有同样的问题(python 2.6.6)。我必须使用 getattr(self, '_EC__var')
标签: python