Я хочу полностью обернуть объект, чтобы все запросы атрибутов и методов были перенаправлены на объект, который он обертывал, но также переопределял любые методы или переменные, которые я хочу, а также предоставлял некоторые из моих собственных методов. Этот класс-оболочка должен появиться на 100%, поскольку существующий класс (isinstance
должен действовать так, как если бы это был класс), однако подклассы сами по себе не собираются его обрезать, так как я хочу обернуть существующий объект. Есть ли какое-то решение в Python для этого? Я думал что-то вроде:
class ObjectWrapper(BaseClass):
def __init__(self, baseObject):
self.baseObject = baseObject
def overriddenMethod(self):
...
def myOwnMethod1(self):
...
...
def __getattr__(self, attr):
if attr in ['overriddenMethod', 'myOwnMethod1', 'myOwnMethod2', ...]
# return the requested method
else:
return getattr(self.baseObject, attr)
Но я не знаком с переопределением __getattr__
, __setattr__
и __hasattr__
, поэтому я не уверен, как правильно это сделать.