为了账号安全,请及时绑定邮箱和手机立即绑定

python类的初始化出错了吗?

python类的初始化出错了吗?

素胚勾勒不出你 2019-02-25 10:06:56
class FirstClass:def setdata(self,value):self.data = valuedef display(self):print(self.data)x = FirstClass()y = FirstClass()x.setdata('King Arthur')y.setdata(3.14)x.display()y.display()x.data = 'New Data'x.display()class SecondClass(FirstClass):def display(self):print('current value = "%s"' % (self.data))z = SecondClass()z.setdata(43)z.display()class ThirdClass(FirstClass):def _init_(self,value):self.data = valuedef _add_(self,other):return ThirdClass(self.data + other)def _str_(self):return '[ThirdClass: %s]' % self.datadef mul(self,other):self.data *= otherb = ThirdClass('abc')b.display()我是照着书上敲的代码页报以下错:b = ThirdClass('abc')TypeError: object.__new__() takes no parameters
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

python类的初始化函数是__init__,有两个“_”,你只有1个,所以python认为你的ThirdClass没有定义初始化函数,所以它就给你调用了默认的不接受参数的初始化函数,所以它才告诉你ThirdClass的不接受有参数的初始化。

查看完整回答
反对 回复 2019-03-27
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

是两个下划线。不是一个。python最容易出现type error,所以通常python编程里会加入许多的单元测试,逐步调试。

比如你这个程序,显然前面的代码都是对的。出错肯定是ThirdClass,又是初始化出错。而你试图重载__init__,所以问题就是出在这里。

python编码规范中最重要的就是防type error.

查看完整回答
反对 回复 2019-03-27
  • 3 回答
  • 0 关注
  • 942 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信