2012-08-23 89 views
0

是否可以定義一個python類,如果某個屬性被調用但不存在於類實例中,該類不會返回AttributeError異常?像接受任何屬性的類

class A(): 
    pass 

a = A() 
a.tutu <==not raising AttributeError 

感謝

+1

你要什麼,而不是發生提高異常? –

回答

3

你可以定義你的類__getattr__方法。請參閱the documentation

這裏有一個簡單的例子,讓所有缺少的屬性值「默認值」:

>>> class Foo(object): 
...  def __getattr__(self, attr): 
...   return "Default" 
>>> f = Foo() 
>>> f.someJunk 
'Default' 
+0

完美!謝謝 –

+1

這個用戶應該知道,這將導致所有'hasattr'調用返回'True',並且在調用時也不會真正將屬性添加到對象的'__dict__'。 –

相關問題