質問

私はのboto には、管理するために使用しているいくつかの<のhref = "のhttp:/ /aws.amazon.com/ec2/」のrel = "nofollowをnoreferrer"> 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