Вопрос

Я использую бото чтобы управлять некоторыми EC2 экземпляры.Он предоставляет класс экземпляра.Я бы хотел подклассировать его в соответствии с моими конкретными потребностями.Поскольку boto предоставляет интерфейс запросов для получения ваших экземпляров, мне нужно что-то для преобразования между классами.Это решение, кажется, работает, но изменение атрибута класса кажется сомнительным.Есть ли способ получше?

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
Это было полезно?

Решение

Я бы не стал создавать подклассы и приводить их.Я не думаю, что кастинг когда-либо был хорошей политикой.

Вместо этого рассмотрите Оболочку или Фасад.

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

Теперь вы можете создать подкласс MyThing столько, сколько вы захотите, и вам не нужно будет разыгрывать свой boto.ec2.instance.Instance вообще.Он остается более или менее непрозрачным элементом вашего объекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top