亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 987 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號