在无效属性调用上定义自定义错误消息

时间:2016-07-21 16:38:51

标签: python class error-handling attributes

如何在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

1 个答案:

答案 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”子句。