Я хотел бы сериализовать объекты Python в формате plist (и это можно сделать с помощью plistlib). Моя идея состояла в том, чтобы написать класс PlistObject который оборачивает других объектов:Обтекание объекта Python
def __init__(self, anObject):
self.theObject = anObject
и обеспечивает «писать» метод:
def write(self, pathOrFile):
plistlib.writeToPlist(self.theObject.__dict__, pathOrFile)
Теперь было бы неплохо, если бы PlistObject вела себя просто нравится завернутые сам объект, что все атрибуты и методы каким-то образом «перенаправляются» на обернутый объект. Я понимаю, что методы __getattr__
и __setattr__
могут быть использован для сложных операций атрибутов:
def __getattr__(self, name):
return self.theObject.__getattr__(name)
Но тогда, конечно, я бег в проблему, что конструктор теперь производит бесконечную рекурсию, так и self.theObject = anObject
пытается получить доступ к обернутому объекту ,
Как я могу избежать этого? Скажите мне, что вся идея кажется плохим.
Вы считали, что все ваши классы наследуются от PlistObject? –
Да, это была бы альтернатива. Я не уверен, какое решение имеет больше преимуществ. –