基本クラスBase
とサブクラスSpecial
があります。BaseClassオブジェクトを慣用的にSubClassオブジェクトに変換しますか?
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
どのように私は、インスタンスSpecial
へBase
のインスタンスを回すことができますか?現在、私はちょうど__dict__
をreassignes Special
上で定義されたclassmethod
を持っている:
class Special(Base):
...
@classmethod
def from_base(cls, baseobj):
special = Special()
special.__dict__ = baseobj.__dict__
return special
は、この慣用句ですか?何がそうでないならば?
P.S.シナリオの例:基本クラスはいくつかのデフォルトの実装です。野生では、おそらくベースクラスのオブジェクトを見つけるでしょう。現在、いくつかのプロジェクトでは、基本クラスはサブクラスであり、特別なメソッドがサブクラスに追加されています。今では主に基本クラスオブジェクトで作業していますが、いくつかのメソッドにアクセスする必要があるため、時折、特別クラスに "アップグレード"したいことがあります。
なぜインスタンス化またはSpecial' 'の力を使用することはできません。
とにかく、ここのコードですか? –