サブクラスにクラスのインスタンスをキャスト
質問
私はの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
をキャストする必要はありません。それはあなたのオブジェクト内で、多かれ少なかれ不透明な要素として残っています。
所属していません StackOverflow