Преобразовать объект 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

Это идиоматично? Если нет, то что было бы?

Постскриптум Пример сценария: Базовый класс является реализацией по умолчанию. В дикой природе вы, скорее всего, найдете объекты базового класса. Теперь в каком-то проекте базовый класс был подклассами, и к подклассу были добавлены специальные методы. Теперь вы в основном все еще работаете с объектами базового класса, но время от времени вам нужно будет «обновиться» до специального класса, потому что вам понадобится доступ к некоторым методам.

Ответы на вопрос(2)

Ваш ответ на вопрос