Волшебный метод __getattr__
вызывается, когда атрибут не существует в экземпляре / классе / родительских классах.Вы бы использовали его для создания специального исключения для отсутствующего атрибута:
class Foo(object):
def __getattr__(self, attr):
#only called what self.attr doesn't exist
raise MyCustonException(attr)
Если вы хотите настроить доступ к атрибутам класса, вам нужно определить __getattr__
для метакласса / типа:
class BooType(type):
def __getattr__(self, attr):
print attr
return attr
class Boo(object):
__metaclass__ = BooType
boo = Boo()
Boo.asd # prints asd
boo.asd # raises an AttributeError like normal
Если вы хотите настроить доступ к атрибуту all , используйте магический метод __getattribute__
.