클래스 인스턴스를 서브 클래스로 시전합니다
문제
사용 중입니다 보토 일부를 관리합니다 EC2 인스턴스. 인스턴스 클래스를 제공합니다. 내 특정 요구를 충족시키기 위해 하위 클래스를하고 싶습니다. Boto는 인스턴스를 얻기 위해 쿼리 인터페이스를 제공하기 때문에 클래스간에 변환 할 무언가가 필요합니다. 이 솔루션은 작동하는 것처럼 보이지만 클래스 속성을 변경하는 것은 불안해 보입니다. 더 좋은 방법이 있습니까?
from boto.ec2.instance import Instance as _Instance
class Instance(_Instance):
@classmethod
def from_instance(cls, instance):
instance.__class__ = cls
# set other attributes that this subclass cares about
return instance
해결책
나는 서브 클래스와 캐스트하지 않을 것입니다. 나는 캐스팅이 결코 좋은 정책이라고 생각하지 않습니다.
대신 래퍼 나 외관을 고려하십시오.
class MyThing( object ):
def __init__( self, theInstance ):
self.ec2_instance = theInstance
이제 서브 클래스를 할 수 있습니다 MyThing
원하는만큼 캐스팅 할 필요가 없습니다. boto.ec2.instance.Instance
조금도. 그것은 당신의 객체에서 더 많은 불투명 한 요소로 남아 있습니다.
제휴하지 않습니다 StackOverflow