我对某项计划有疑问:
class A:
def __init__(self, x, y):
self.x = x
self.y = y
def to_string(self):
return "x, y = (" + str(self.x) + ", " + str(self.y) + ")"
def __str__(self):
return self.to_string()
class B(A):
def __init__(self, z, *args):
A.__init__(self, *args)
self.z = z
def __str__(self):
return super().__str__()
class C(A):
def __init__(self, *args):
super().__init__(*args)
def to_string(self):
return "Klasse C, " + super().to_string()
为什么我要写
A.__init__(self, *args)
而不是
A.__init__(*args)
在C级它有效吗? 很多问候
答案 0 :(得分:4)
您正在访问未绑定方法,因此未传入self
。A.__init__
没有上下文可以知道要绑定的实例。
您可以通过多种方式提供该背景信息:
self
,就像你一样。A.__init__.__get__(self)(*args)
super().__init__(*args)
,然后从当前方法中获取上下文。请参阅Why is Python 3.x's super() magic?