El método mágico __getattr__
se invoca cuando el atributo no existe en las clases instancia/clase/principal. Que tendría que utilizar para elevar una excepción especial para un atributo que falta:
class Foo(object):
def __getattr__(self, attr):
#only called what self.attr doesn't exist
raise MyCustonException(attr)
Si desea personalizar el acceso a los atributos de la clase, es necesario definir __getattr__
en la metaclase/Tipo:
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
Si desea personalizar el acceso de atributos , use el método mágico __getattribute__
.
¿No modifica eso la instancia, no el acceso de atributo de clase? –
@ RomanA.Taycher He ampliado mi respuesta. – agf