使用不带继承的其他类方法(python)

2024-04-23 15:11:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下内容

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之下。另外,我不希望ClassA中的meth1被ClassB覆盖。 有没有办法从ClassC中的ClassB调用meth2和meth3,让ClassC继承ClassA并使用ClassA中的meth1? 我希望我的解释清楚。如果你能给我一些有关这方面的文件,我将不胜感激。你知道吗


Tags: and方法objectdefclass重构办法calls
2条回答

如果方法确实需要保留在它们的原始类下,我可能会选择多重继承,尽管我可能需要更多关于项目细节的信息来明确地说。你知道吗

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

使ClassC成为ClassB的子类:

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。你知道吗

相关问题 更多 >