我的遗留代码中有两个类Z1
和Z0
,基本上是一个复制粘贴。它们都包含函数f1() ... f6()
,它们类似,函数f7()
,它们在字符串中不同。 Class Z1
包含string
" Z1" Z0
包含string
" Z0"在function f7()
。
这些类具有以下继承层次结构:
class Z1(Y1)
class Y1(D)
class D(B)
class Z2(Y2)
class Y2(B)
Z1 -> Y1 -> D -> B
Z2 -> Y2 ------> B
在Python中摆脱这个复制粘贴代码的最佳方法是什么?
答案 0 :(得分:1)
如果您可以安全地将f1() ... f6()
添加到B,那么您可以这样做,并使用type(self).__name__
代替硬编码Z0
或Z1
。这可能是最简单的解决方案,也是可能引入最大膨胀的解决方案。
如果你不想臃肿B,我可能会做一个单独的课(让我们说C
),将f1()...f7()
(修改后的f7
)添加到{{1并且Z1和Z2都继承自C和Y1 / Y2 - 但是在这一点上你可能想要考虑重构代码。
无论哪种方式,您可能都希望使用内省来摆脱硬编码的类名,因为硬编码的东西不是很优雅:)