Jetez un exemple de classe à une sous-classe
Question
J'utilise Boto pour gérer certains EC2. Il fournit une classe d'instance. Je voudrais sous-classe pour répondre à mes besoins particuliers. Depuis Boto fournit une interface de requête pour obtenir vos instances, je besoin de quelque chose pour convertir entre les classes. Cette solution semble fonctionner, mais en changeant l'attribut de classe semble douteux. Y at-il une meilleure façon?
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
La solution
Je ne sous-classe et de fonte. Je ne pense pas que la coulée est toujours une bonne politique.
Au lieu de cela, envisager une Wrapper ou façade.
class MyThing( object ):
def __init__( self, theInstance ):
self.ec2_instance = theInstance
Maintenant, vous pouvez sous-classe MyThing
autant que vous voulez et vous ne devriez pas besoin d'être coulée votre boto.ec2.instance.Instance
du tout. Il reste comme un élément plus ou moins opaque dans votre objet.