python类的初始化出错了吗?

class FirstClass:
def setdata(self,value):
self.data = value
def 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 = value
def _add_(self,other):
return ThirdClass(self.data + other)
def _str_(self):
return '[ThirdClass: %s]' % self.data
def mul(self,other):
self.data *= other
b = ThirdClass('abc')
b.display()

我是照着书上敲的代码页报以下错:
b = ThirdClass('abc')
TypeError: object.__new__() takes no parameters

素胚勾勒不出你
浏览 943回答 3
3回答

慕码人2483693

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

有只小跳蛙

是两个下划线。不是一个。python最容易出现type error,所以通常python编程里会加入许多的单元测试,逐步调试。比如你这个程序,显然前面的代码都是对的。出错肯定是ThirdClass,又是初始化出错。而你试图重载__init__,所以问题就是出在这里。python编码规范中最重要的就是防type error.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java