python类的初始化出错了吗?请高手来看下
classFirstClass:defsetdata(self,value):self.data=valuedefdisplay(self):print(self.dat...
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
求解 万分感谢 展开
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
求解 万分感谢 展开
展开全部
你可以用python2.4来跑一下,新版本的python好像不支持这样的带参数初始化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解,从一开始的基类继承下来就没有初始化参数。你在实例化类的时候使用了ABC参数,python认为你传入了多余的参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼下回答的对。是两个下划线。不是一个。python最容易出现type error,所以通常python编程里会加入许多的单元测试,逐步调试。
比如你这个程序,显然前面的代码都是对的。出错肯定是ThirdClass,又是初始化出错。而你试图重载__init__,所以问题就是出在这里。
python编码规范中最重要的就是防type error.
比如你这个程序,显然前面的代码都是对的。出错肯定是ThirdClass,又是初始化出错。而你试图重载__init__,所以问题就是出在这里。
python编码规范中最重要的就是防type error.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询