如何在python中为特定的无效属性调用定义自定义错误消息?
我编写了一个类,其属性赋值依赖于实例创建的输入,并且如果调用未分配的属性,则返回更具描述性的错误消息:
class test:
def __init__(self, input):
if input == 'foo':
self.type = 'foo'
self.a = 'foo'
if input == 'bar':
self.type = 'bar'
self.b = 'bar'
class_a = test('foo')
print class_a.a
print class_a.b
执行时,我收到此错误消息
AttributeError: test instance has no attribute 'b'
而不是我希望得到像
这样的东西AttributeError: test instance is of type 'foo' and therefore has no b-attribute
答案 0 :(得分:1)
在您的课程中覆盖 getattr 。
class test(object):
def __init__(self, input):
if input == 'foo':
self.type = 'foo'
self.a = 'foo'
if input == 'bar':
self.type = 'bar'
self.b = 'bar'
def __getattr__(self, attr):
raise AttributeError("'test' object is of type '{}' and therefore has no {}-attribute.".format(self.type, attr))
当python无法正常找到属性时,将调用getattr 。基本上,当你的类引发一个AttributeError时,它就像一个“except”子句。