在python中访问特定基类的函数

时间:2017-09-08 09:15:04

标签: python python-2.7 class derived-class base-class

我在两个不同的类中有两个具有相同名称的函数。这两个类都继承到第三个类。所以在我的第三课我想要访问特定类的功能。我该怎么办..

class Base(object):
    def display(self):
        return "displaying from Base class"

class OtherBase(object):
    def display(self):
        return "displaying from Other Base class"

class Multi(Base, OtherBase):
    def exhibit(self):
       return self.display() # i want the display function of OtherBase

3 个答案:

答案 0 :(得分:1)

您可以将其明确称为OtherBase.display(self)

答案 1 :(得分:1)

您必须修改派生类的顺序 作为class Multi(OtherBase, Base)

答案 2 :(得分:1)

有两种方法:

  1. 定义Multi

    时更改继承的顺序
    Multi(OtherBase, Base)
    
  2. 明确调用该类的display方法:

    xxxxx.display(self)
    
  3. 对于您的特定用例,我建议第二个。您可以利用默认参数并根据函数的调用方式更改函数的行为。

    class Multi(Base, OtherBase):
         def exhibit(self, other_base=False):
             if other_base:
                 return OtherBase.display(self)
    
             return Base.display(self)
    
    minx = Multi()
    
    print minx.exhibit()
    'displaying from Base class'
    
    print minx.exhibit(other_base=True)
    'displaying from Other Base class'