我应该在我的类中重新定义什么特殊方法(s?),以便处理AttributeErrors异常并在这些情况下返回特殊值?
例如,
>>> class MySpecialObject(AttributeErrorHandlingClass):
a = 5
b = 9
pass
>>>
>>> obj = MySpecialObject()
>>>
>>> obj.nonexistent
'special value'
>>> obj.a
5
>>> obj.b
9
我用谷歌搜索答案但找不到它.
解决方法:
Otto Allmendinger如何使用__getattr__的例子使其使用过于复杂.您只需定义所有其他属性,如果缺少某些属性,Python将回退到__getattr__.
例:
class C(object):
def __init__(self):
self.foo = "hi"
self.bar = "mom"
def __getattr__(self, attr):
return "hello world"
c = C()
print c.foo # hi
print c.bar # mom
print c.baz # hello world
print c.qux # hello world