Python 我可以在设置函数中调用基类方法吗

Python 我可以在设置函数中调用基类方法吗,python,Python,我是第一次写python脚本 这是一个基本问题 class TestLolSupv(TestSetTxFreqPL4App,TestCaseAppForceReset): def setUp(self): super().setUp() super().test_TX_SET_FREQ_PL4P2_A001() 我可以在setUp函数中以这种方式直接调用基类方法吗? 如果我继承了多个基类,并且super.setup()执行哪两个基类?如果是,首先是哪一

我是第一次写python脚本 这是一个基本问题

class TestLolSupv(TestSetTxFreqPL4App,TestCaseAppForceReset):

    def setUp(self):
        super().setUp()
        super().test_TX_SET_FREQ_PL4P2_A001()
我可以在setUp函数中以这种方式直接调用基类方法吗? 如果我继承了多个基类,并且super.setup()执行哪两个基类?如果是,首先是哪一个?

super.setup()
将从左到右搜索所有父类中的
setup
方法,直到找到它并执行找到的第一个方法

比如说

class A(object):
  def setup(self):
    print("A")

class B(object):
  def setup(self):
    print("B")

class C(A, B):
  def setup(self):
    super().setup()

c = C()
c.setup()
将答案打印为“A”

如果父类继承自其他类,则将按该顺序搜索它们

范例

class A(object):
  def setup(self):
    pass

class B(object):
  def setup(self):
    pass

class C(A):
  pass

class D(B):
  pass

class E(C, D):
  def setup(self):
    super().setup()

class F(D, C):
  def setup(self):
    super().setup()
现在,对于E,将执行A中的设置,对于F,将执行B中的设置。

是的,执行
super()。setup()
是调用父方法类的正确方法

现在,关于多重继承和方法调用。Python实际上只调用一个类的方法。当您执行多重继承时,Python将创建一个“多重解析顺序”,即Python为方法检查父类的顺序。一旦在父级中找到该方法,它将停止查找该方法(通常会发生这种情况,因为继承层次结构可能很大)

在您的示例中,您的解决顺序为:

[,]
您可以通过运行
TestLolSupv.mro()
来检查它

如果您想控制调用对象的顺序,我建议改用委托。而且,若您使用继承来访问父类方法,那个么委托会更好。通常,当父类调用子类方法时,继承是值得的,因为这意味着您正在构建一个抽象

这里介绍一些python中的多重继承。

super()
如果要重写该方法并希望调用父级实现,那么从
setUp()
中调用
super().setUp()
是有意义的。使用
super()
进行
test\u……
也没有什么意义,这可能只是
self.test\u……()