Pregunta

Estoy usando boto para gestionar algunos EC2 . Proporciona una clase de instancia. Me gustaría una subclase para satisfacer mis necesidades particulares. Desde boto proporciona una interfaz de consulta para obtener las instancias, necesito algo para convertir entre clases. Esta solución parece funcionar, pero cambiando el atributo de clase parece poco fiable. ¿Hay una mejor manera?

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
¿Fue útil?

Solución

No me subclase y yeso. No creo que la fundición es siempre una buena política.

En su lugar, considere una envoltura o fachada.

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

Ahora, usted puede subclase MyThing todo lo que quiere y que no debería ser necesario emitir su boto.ec2.instance.Instance en absoluto. Permanece como un elemento más o menos opaco en su objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top