有一个基类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
实例?目前我在Special
上定义了一个classmethod
,它只是重新分配__dict__
:
class Special(Base):
...
@classmethod
def from_base(cls, baseobj):
special = Special()
special.__dict__ = baseobj.__dict__
return special
这是惯用语吗?如果不是,会是什么?
一个例子场景:基类是一些默认的实现。在野外,您可能会找到基类的对象。现在在一些项目中,基类已经是子类,并且特殊的方法已经添加到子类中。现在您仍然主要使用基类对象,但有时您会希望“升级”到特殊类,因为您需要访问一些方法。
目前没有回答
相关问题 更多 >
编程相关推荐