Domanda

boto per gestire alcune EC2 . Esso fornisce una classe di grado. Mi piacerebbe creare una sottoclasse di soddisfare le mie esigenze particolari. Dal momento che boto fornisce un'interfaccia query per ottenere le istanze, ho bisogno di qualcosa per la conversione tra le classi. Questa soluzione sembra funzionare, ma cambiando l'attributo di classe sembra poco raccomandabile. C'è un modo migliore?

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
È stato utile?

Soluzione

Non vorrei sottoclasse e cast. Non credo che la fusione è mai una buona politica.

Invece, si consideri un involucro o di facciata.

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

Ora, è possibile creare una sottoclasse MyThing tanto quanto si vuole e non si dovrebbe essere necessario lanciare il vostro boto.ec2.instance.Instance a tutti. Rimane come un elemento più o meno opaco nell'oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top