문제

사용 중입니다 보토 일부를 관리합니다 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 조금도. 그것은 당신의 객체에서 더 많은 불투명 한 요소로 남아 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top