Pergunta

Eu estou usando boto para gerenciar alguns instâncias EC2 . Ele fornece uma classe de Instância. Eu gostaria de subclasse-lo para atender às minhas necessidades específicas. Desde boto fornece uma interface de consulta para obter seus casos, eu preciso de algo para converter entre as classes. Esta solução parece funcionar, mas alterando o atributo de classe parece desonesto. Existe uma maneira melhor?

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
Foi útil?

Solução

Eu não subclasse e elenco. Eu não acho que casting é sempre uma boa política.

Em vez disso, considere um Wrapper ou fachada.

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

Agora, você pode subclasse MyThing tanto quanto você quer e você não precisa estar lançando seu boto.ec2.instance.Instance em tudo. Ele permanece como um elemento mais ou menos opaca em seu objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top