Ich verwende boto, um einige EC2 Instanzen zu verwalten. Es bietet eine Instance-Klasse. Ich möchte es unterteilen, um meine speziellen Bedürfnisse zu erfüllen. Da Boto eine Abfrage-Schnittstelle bietet, um Ihre Instanzen zu erhalten, brauche ich etwas, um zwischen den Klassen zu konvertieren. Diese Lösung scheint zu funktionieren, aber das Ändern des Klassenattributs scheint zweifelhaft zu sein. Gibt es einen besseren Weg?Werfen Sie eine Klasseninstanz in eine Unterklasse
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 Zusammensetzung über Vererbung, wenn möglich. –
Die Klasse, die ich unterklassieren möchte, ist viel komplexer als die Additionen, die ich mache (wirklich nur ein paar Attribute). Um die gesamte Funktionalität in der umschlossenen Klasse verfügbar zu machen, würde ich eine Menge umgebender Funktionen/Eigenschaften benötigen. Ich verstehe die Zusammensetzung v. Vererbungsfrage, aber die Kompositionsroute scheint mehr Mühe zu machen, als es in diesem Fall wert ist. – iconoplast
@iconoplast: "Ich würde viele eingepackte Funktionen/Eigenschaften benötigen". Warum? Die Instanz heißt immer "myThing.ec2_instance". Warum können Sie die Eigenschaften und Methoden der EC2-Instanz nicht direkt aufrufen? Was ist sonst noch los? –