Konwersja obiektu BaseClass do obiektu SubClass idiomatycznie?

Jest klasa bazowaBase i podklasaSpecial.

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

Jak mogę włączyć wystąpienieBase w instancjęSpecial? Obecnie mamclassmethod zdefiniowany naSpecial to po prostu zmienia przypisanie__dict__:

class Special(Base):
    ...
    @classmethod
    def from_base(cls, baseobj):
        special = Special()
        special.__dict__ = baseobj.__dict__
        return special

Czy to idiomatyczne? Jeśli nie, co by to było?

P.S. Przykładowy scenariusz: klasa bazowa to domyślna implementacja. W naturze najprawdopodobniej znajdziesz obiekty klasy bazowej. W niektórych projektach klasą podstawową są podklasy, a do podklasy zostały dodane specjalne metody. Teraz nadal pracujesz głównie z obiektami klasy bazowej, ale od czasu do czasu będziesz chciał „uaktualnić” do specjalnej klasy, ponieważ będziesz potrzebować dostępu do niektórych metod.

questionAnswers(2)

yourAnswerToTheQuestion