Frage

Ich bin mit Boto einig EC2 Instanzen. Es stellt eine Instanz der Klasse. Ich möchte es zu Unterklasse meiner speziellen Bedürfnisse zu erfüllen. Da Boto eine Abfrage-Schnittstelle Ihre Instanzen zu bekommen bietet, muss ich etwas zwischen den Klassen zu konvertieren. Diese Lösung scheint zu funktionieren, aber scheint das Klassenattribut zu ändern vertrackt. Gibt es einen besseren Weg?

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
War es hilfreich?

Lösung

Ich würde nicht Unterklasse und gegossen. Ich glaube nicht, Casting ist immer eine gute Politik.

Stattdessen sollten Sie einen Wrapper oder Fassade.

class MyThing( object ):
    def __init__( self, theInstance ):
        self.ec2_instance = theInstance 

Jetzt können Sie Unterklasse MyThing so viel wie Sie wollen, und Sie sollten nicht Ihre boto.ec2.instance.Instance überhaupt werden müssen, Gießen. Es bleibt als mehr oder weniger undurchsichtiges Element in Ihrem Objekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top