Преобразовать объект BaseClass в объект SubClass идиоматически?
Есть базовый классBase
и подкласс.Special
class Base(object):
def __init__(self, name):
self.name = name
def greet(self):
return 'Hello %s' % self.name
class Special(Base):
def __init__(self, name):
super(Special, self).__init__(name)
def rhyme(self):
return 'Hi %s! How are you? Fine, thanks. What about you?' % self.name
Как я могу включить экземплярBase
в экземплярSpecial
? В настоящее время у меня естьclassmethod
определено наSpecial
это просто переназначает:__dict__
class Special(Base):
...
@classmethod
def from_base(cls, baseobj):
special = Special()
special.__dict__ = baseobj.__dict__
return special
Это идиоматично? Если бы не то, что было бы?
Постскриптум Пример сценария: Базовый класс является реализацией по умолчанию. В дикой природе выскорее всего найду объекты базового класса. Теперь в каком-то проекте базовый класс был подклассами, и к подклассу были добавлены специальные методы. Теперь вы в основном все еще работаете с объектами базового класса, но время от времени вызахочуОбновить" в особый класс, потому что выВам понадобится доступ к некоторым методам.