Echar una instancia de clase a una subclase
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
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