我有一個變量,它可能會或可能不會在實例中得到一個值:檢查類實例變量是否在Python中設置的最佳方法是什麼?
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' ](http://docs.python.org/2/library/functions.html#getattr)函數。 –
我試過了,它有相同的問題(python 2.6.6)。我必須使用getattr(self,'_EC__var') – Phoenix