3

我正在使用boto来管理一些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
4

1 回答 1

7

我不会继承和转换。我认为选角从来都不是一个好政策。

相反,请考虑使用 Wrapper 或 Façade。

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

现在,您可以MyThing根据需要进行尽可能多的子类化,并且您根本不需要进行强制转换boto.ec2.instance.Instance。它在您的对象中仍然是一个或多或少的不透明元素。

于 2009-06-01T20:03:39.997 回答