Use o método de classe, não o método de instância com o mesmo nome
Eu tenho o seguinte trecho:
class Meta(type):
def __getattr__(self, name):
pass
class Klass(object):
__metaclass__ = Meta
def get(self, arg):
pass
Agora, se eu fizer:
kls = Klass()
kls.get('arg')
tudo funciona como esperado (o método de instânciaget
é chamado).
Mas se eu fizer:
Klass.get('arg')
novamente o método da instância é encontrado e uma exceção é fornecida, uma vez que é tratado como um método não vinculado.
Como faço para ligar paraKlass.get('arg')
passar pela__getattr__
definido na metaclasse? Eu preciso disso porque quero proxy todos os métodos chamados em uma classe para outro objeto (isso seria feito em__getattr__
)