有或没有自己的构造器?

2024-10-06 10:21:27 发布

您现在位置: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):
    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()

为什么我要写

^{pr2}$

而不是

A.__init__(*args)

在C班有效吗? 很多问候


Tags: to项目selfstringreturninitdefargs
1条回答
网友
1楼 · 发布于 2024-10-06 10:21:27

您正在访问unbound方法,因此self未传入。没有上下文让A.__init__知道要绑定到哪个实例。在

您有几个选项可以提供该上下文:

  • 像您一样显式地传入self。在
  • 使用A.__init__.__get__(self)(*args)手动绑定
  • 在Python3中,使用super().__init__(*args),然后上下文从当前方法中获取。见Why is Python 3.x's super() magic?

相关问题 更多 >