2016-07-21 4 views
0

Как определить настраиваемые сообщения об ошибках для определенных недопустимых вызовов атрибутов в python?Определить пользовательские сообщения об ошибках при недействительном вызове атрибута

Я написал класс Thats атрибут назначение зависит от входа на создание экземпляра и как возвращать сообщение более описательный ошибки, если неприсвоенный атрибут называется:

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

'input' и' type' являются зарезервированными словами Python. Лучше избегать их использования – alanvitor

ответ

1

Override 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)) 

GetAttr вызывается, когда питон не может найти атрибут обычно. По сути, это похоже на предложение «except», когда ваш класс вызывает AttributeError.

Смежные вопросы