3
EC2インスタンスを管理するためにbotoを使用しています。これはInstanceクラスを提供します。私はそれを私の特別なニーズを満たすためにサブクラス化したいと思います。 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
+1可能であれば、継承上の合成。 –
私がサブクラス化したいクラスは、追加しているクラス(実際にはいくつかの属性)よりもはるかに複雑です。ラップされたクラスのすべての機能を公開するには、たくさんのラップされた関数/プロパティが必要です。私はコンポジション対継承の問題を理解していますが、コンポジションルートを作成することは、このケースでは価値があるよりも難しいようです。 – iconoplast
@iconoplast: "ラップされた関数やプロパティがたくさん必要です"。どうして?インスタンスの名前は常にmyThing.ec2_instanceです。 EC2インスタンスのプロパティとメソッドを直接呼び出すことができないのはなぜですか?それ以外に何が起こっているのですか? –