我正在寻找一个避免代码重复的好解决方案,我的代码看起来像这样;
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)
答案 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