程序出错
class D:def _init_(self,x,y):
self.x=x
self.y=y
def _init_(self,x,y):
self.x=x
self.y=y
def add(self):
return self.x+self.y
def mul(self):
return self.x*self.y
d=D(3,4)
Traceback (most recent call last):
File "<pyshell#99>", line 1, in <module>
d=D(3,4)
TypeError: D() takes no arguments 你的程序出错是因为构造方法的名称写错了。在Python中,构造方法必须使用双下划线 `__init__`(两边各两个下划线),而你写成了单下划线 `_init_`。此外,类中重复定义了两次 `_init_` 方法,导致第二个覆盖了第一个。
以下是修正后的代码:
class D:
def __init__(self, x, y):# 正确写法:双下划线
self.x = x
self.y = y
def add(self):
return self.x + self.y
def mul(self):
return self.x * self.y
d = D(3, 4)# 现在可以正常创建实例
print(d.add())# 输出 7
print(d.mul())# 输出 12
错误原因分析:
1. 将 `_init_` 改为 `__init__`(两边各两个下划线)
2. 删除了重复的构造方法定义
3. 现在 `D(3,4)` 能正确调用构造方法初始化属性
注意:Python 的魔法方法(如构造方法)都需要用双下划线包围,常见的有:
- `__init__`:构造方法
- `__str__`:对象字符串表示
- `__len__`:获取长度
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 双下划线 我个新鱼油为什么看不懂萌新交流区的东西{:10_266:}{:10_266:}{:10_266:}
页:
[1]