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类和CNOT声明期间的缩进,即
B
C
的构造函数不同。它们使用不同的方法来调用基构造函数。请在声明class B和CNote时更正缩进,即
B
C
的构造函数不相同。它们使用不同的方法调用基构造函数。