기본 클래스 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
의 인스턴스를 설정할 수 있습니다? 현재 내가이 classmethod
그냥 __dict__
을 reassignes Special
에 정의 :
class Special(Base):
...
@classmethod
def from_base(cls, baseobj):
special = Special()
special.__dict__ = baseobj.__dict__
return special
이 관용적인가? 그게 아니라면?
P. 예제 시나리오 : 기본 클래스가 일부 기본 구현입니다. 야생에서는 기본 클래스의 객체를 찾을 수 있습니다. 이제 일부 프로젝트에서는 기본 클래스가 하위 클래스가되었으며 특수 메서드가 하위 클래스에 추가되었습니다. 이제는 대부분 기본 클래스 개체로 작업하지만, 때때로 일부 메서드에 액세스해야하기 때문에 때때로 특수 클래스로 "업그레이드"할 것입니다.
왜 인스턴스화 또는 Special''의 힘을 사용 할 수 없습니다 :
어쨌든, 여기에 코드입니까? –