Class Python 中的继承、超方法和重写方法
Class inheritance in Python, super and overridden methods
考虑以下代码:
class A:
def foo(self, a):
return a
def bar(self, a):
print(foo(a))
class B(A):
def foo(self, a):
return a[0]
现在调用B.bar(a)
结果是print(a[0])
,但我想要的是print(a)
。更直接地说:我希望 child class 中 bar()
的调用使用 A
中给出的 foo
的定义,即使被覆盖也是如此。我该怎么做?
我相信这就是您要找的:
class A(object):
def foo(self, a):
return a
def bar(self, a):
print(A.foo(self,a))
class B(A):
def foo(self, a):
return a[0]
或者:
class A:
def foo(self, a):
return a
def bar(self, a):
print(self.foo(a))
class B(A):
def foo(self, a):
return super().foo(a)
考虑以下代码:
class A:
def foo(self, a):
return a
def bar(self, a):
print(foo(a))
class B(A):
def foo(self, a):
return a[0]
现在调用B.bar(a)
结果是print(a[0])
,但我想要的是print(a)
。更直接地说:我希望 child class 中 bar()
的调用使用 A
中给出的 foo
的定义,即使被覆盖也是如此。我该怎么做?
我相信这就是您要找的:
class A(object):
def foo(self, a):
return a
def bar(self, a):
print(A.foo(self,a))
class B(A):
def foo(self, a):
return a[0]
或者:
class A:
def foo(self, a):
return a
def bar(self, a):
print(self.foo(a))
class B(A):
def foo(self, a):
return super().foo(a)