Say you have class Foo
which has 4 methods and class FooDecorator
. From those 4 methods, FooDecorator
only needs to decorate one method.
Is it ok from a pythonic/OO design point of view to use __getattr__
for forwarding the requests to the decorated instance? This would basically remove a lot of boilerplate code in the deocrator class.
Example:
class Foo(object):
def method_1(self):
return some, stuff
def method_2(self):
return some, stuff
def method_3(self):
return some, stuff
def method_4(self):
return some, stuff
class FooClassicDecorator(object):
def __init__(self, foo_instance):
self._foo_instance = foo_instance
def method_1(self):
returned = self._foo_instance.method_1()
return decorate_result(returned)
def method_2(self):
return self._foo_instance.method_2()
def method_3(self):
return self._foo_instance.method_3()
def method_4(self):
return self._foo_instance.method_4()
class FooGetattrDecorator(ojbect):
def __init__(self, foo_instance):
self._foo_instance = foo_instance
def __getattr__(self, attr_name):
return getattr(self._foo_instance, attr_name)
def method_1(self):
returned = self._foo_instance.method_1()
return decorate_result(returned)
Which do you find more elegant? FooClassicDecorator
or FooGetattrDecorator
?