Python 带或不带self的构造函数?
我对一个项目有一个问题:Python 带或不带self的构造函数?,python,Python,我对一个项目有一个问题: 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
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班它有效吗?
大量问候语您正在访问unbound方法,因此不会传入self
。没有上下文让A.\uuuu init\uuuu
知道要绑定到哪个实例
您有几个选项可以提供该上下文:
- 像您所做的那样,显式地传入
self
- 手动绑定,使用
A.\uuuuu init\uuuuuuu.\uuuuu get\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
- 在Python 3中,使用
super()。看
self
。没有上下文让A.\uuuu init\uuuu
知道要绑定到哪个实例
您有几个选项可以提供该上下文:
- 像您所做的那样,显式地传入
self
- 手动绑定,使用
A.\uuuuu init\uuuuuuu.\uuuuu get\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
- 在Python 3中,使用
super()。看
B
和C
的构造函数不同。它们使用不同的方法来调用基构造函数。请在声明class B和CNote时更正缩进,即B
和C
的构造函数不相同。它们使用不同的方法调用基构造函数。