避免使用类继承python进行代码重复

时间:2015-06-30 07:42:07

标签: python python-2.7 object code-duplication

我正在寻找一个避免代码重复的好解决方案,我的代码看起来像这样;

class HostEnvironment(AbstractEnvironment):

    def provision(self, wait_for_sshd=True):

        some code

    def __init__(self, layer_info):

        pass

class VCBEnvironment(HostEnvironment):

    def provision(self, wait_for_sshd=True):

        same code

        plus some more code

    def __init__(self, layer_info):
        super(VCBEnvironment, self).__init__(layer_info)

1 个答案:

答案 0 :(得分:1)

E.g。像这样:

class AbstractEnvironment:
    pass

class HostEnvironment (AbstractEnvironment):
    def __init__ (self, layer_info):
        pass

    def provision (self, wait_for_sshd = True):
        print 'some code'

class VCBEnvironment (HostEnvironment):
    def __init__(self, layer_info):
        HostEnvironment.__init__ (self, layer_info)

    def provision (self, wait_for_sshd = True):
        HostEnvironment.provision (self, wait_for_sshd)
        print 'some more code'

print '\ne1'
e1 = HostEnvironment (None)
e1.provision ()

print '\ne2'
e2 = VCBEnvironment (None)
e2.provision ()

输出:

e1
some code

e2
some code
some more code
相关问题