在大孩子班级打电话给祖父母方法

时间:2017-11-11 18:31:30

标签: python super

抱歉,这可能是个愚蠢的问题,但对我来说很困惑。我们假设我们有以下类:

class A():
 def say(self):
   print("A")

class B(A):
 def say(self):
  print("B")

class C(B):
 def say(self,*args, **kwargs):
  return super(C, self).say(*args, **kwargs)

我正在访问子级中的父方法,并打印B,但我想从类A访问方法,因为我们正在从类B进行访问。

我知道我们可以在B类中添加super,但我不想修改类B。那么有没有选项直接在A课程中从C获取方法?

1 个答案:

答案 0 :(得分:0)

您可以这样调用A.say(self)

class A():
     def say(self):
         print("A")

class B(A):
     def say(self):
         print("B")

class C(B):
     def say(self):
         A.say(self)
         B.say(self)
         print("C")

然后从终端测试它:

>>> a = A()
>>> a.say()
A
>>> b = B()
>>> b.say()
B
>>> c = C()
>>> c.say()
A
B
C

注意:我删除了argskwargs,因为AB类没有使用这些参数。如果您想让say完全取消,只需致电A.say(self, *args, **kwargs),如果A.say返回某些内容,您也可以将其退回