使用另一个没有继承的类方法(python)

时间:2016-05-24 17:16:46

标签: python inheritance

说我有以下

class ClassA (object):
  def meth1() ..

class ClassB (ClassA):
 def meth1() ..
 def meth2() ..
 def meth3() .. 

class ClassC (ClassB): 
 calls meth2() and meth(3) 

我正在尝试重构ClassC,使其继承自ClassA。但是,ClassC使用了ClassB中我不想重写的两个重要方法,它们必须保持在ClassB下。另外,我不希望ClassB中的meth1被ClassB覆盖。 有没有办法从ClassC中的ClassB调用meth2和meth3,并使ClassC继承ClassA并使用ClassA中的meth1? 我希望我的解释清楚。如果你指导我一些关于此的文档,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

ClassC成为的子类 ClassAClassB

class ClassC (ClassA, ClassB): 
   #calls meth2() and meth3() 

ClassC().meth1()会调用ClassA' meth1,而ClassC().meth2()ClassC().meth3()会调用ClassB的方法,因为方法不是在ClassC中定义的是looked-up in the base classes in order

搜索基类的顺序由方法分辨率顺序(MRO)决定。有关MRO的更多信息,请参阅Michele Simionato's articleShalabh Chaturvedi's article

答案 1 :(得分:0)

如果这些方法绝对需要保留在原来的类下,我可能会继续使用多重继承,但我可能需要更多关于项目细节的信息才能这么说。

class ClassC(ClassA, ClassB):
           ... code here ...