我有两个类(Parent1和Parent2)实现了一些方法。然后我有两个类(Child1和Child2),它们应该从相应的父类继承并实现一些函数。问题是Child1和Child2有着完全相同的逻辑,所以我希望有人能为我指出一个解决重用问题的方向。我正在研究条件继承,但不确定,因为它在我所来自的语言中并不是一个真正的东西
举个简单的例子来获得一个想法:
# In file1
class Parent1():
def main_method(self):
# Parent 1 implementation
self.arr = [1, 2, 3]
# In file2
class Parent2():
def main_method(self):
# Parent 2 implementation
self.arr = [2, 4, 6]
# In file3
class Child1(Parent1):
def main_method(self):
Parent1.main_method(self)
# Child logic for main_method
print self.arr
# In file4
class Child2(Parent2):
def main_method(self):
Parent2.main_method(self)
# Child logic for main_method
print self.arr
在我看来,父母变成孩子更合乎逻辑,反之亦然。你可以这样做
我真的不知道这对实际代码是否有意义,但通常commin逻辑放在父类中,而子类向代码添加逻辑。希望这能有所帮助
我想到了两个选择。首先,使用Mixin通过继承添加功能。我觉得这是一个更具Python性的解决方案。注意,Mixin需要是第一个继承类,以便它在MRO中位于第一位(否则将找到
Parent
方法)我以前见过这种方法非常成功。例如,} 代码中使用此模式
django-rest-framework
在其^{第二种选择是使用元类在创建
Child
类时动态地向它们添加方法上面的代码段使用python3.X元类语法。如果要在Python2.X中使用元类,必须将其添加为名为
__metaclass__
的类变量。注意,这种元类方法的伸缩性不是很好;如果您想添加10个带有元类的方法,那么它将比Mixin方法要复杂得多相关问题 更多 >
编程相关推荐