a = SomeClass()
if hasattr(a, 'property'):
a.property
這是唯一的方法來檢查是否有財產或沒有?有沒有其他的方式來做同樣的事情?任何替代方法來檢查是否有任何python屬性?
a = SomeClass()
if hasattr(a, 'property'):
a.property
這是唯一的方法來檢查是否有財產或沒有?有沒有其他的方式來做同樣的事情?任何替代方法來檢查是否有任何python屬性?
那麼,你可以嘗試訪問它,並捕獲AttributeError
,如果它不存在。
try:
a.foo
except AttributeError:
...
我一直沒有太多的多線程代碼,但它似乎是這樣也是處理這個問題的唯一線程安全方式。那是對的嗎?我的意思是,似乎另一個線程可能會在'hasattr(a,'foo')'和'a.foo'之間的某個時間刪除'a.foo',而這將是原子性的。 – 2012-01-29 22:27:25
謝謝Cat Plus Plus。 – shibly 2012-01-29 22:43:45
你可以只使用屬性和捕捉AttributeError
異常,如果它不存在。但使用hasattr
也是一種合理的方法。
與捕捉異常的潛在問題是,你不能輕易的屬性不存在,它存在的,但是當你把它運行一些代碼,之間由於區分代碼引發AttributeError
(也許代碼中的錯誤)。
你可能也想看看這些相關的問題有關此主題的更多信息:
您還可以使用:
if 'property' in a.__dict__:
a.property
什麼'hasattr'錯誤? – yak 2012-01-29 22:25:41
dup? http://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python – danihp 2012-01-29 22:27:11