python - 通過類的方法返回自身新的實(shí)例
問題描述
定義一個(gè)類A,并有一個(gè)自身ID+1的方法,代碼如下:
class A(object): def __init__(self, id):self.id = id def newid(self):self.id = self.id + 1return A(self.id)
將實(shí)例x定義為類A,id為1,打印x.id:
[In]:x = A(1)print(x.id)[Out]:1
現(xiàn)在想創(chuàng)建一個(gè)同樣也是類A的實(shí)例y, 通過類A的newid方法進(jìn)行創(chuàng)建:
[In]:y = x.newid()print(y.id)[Out]:2
可以得到準(zhǔn)確的y的ID為2, 但是發(fā)現(xiàn)x的id也被修改了:
[In]:print(x.id)[Out]:2
請(qǐng)問如何實(shí)現(xiàn)在不修改原實(shí)例x的情況下將y正確的生成,謝謝!
問題解答
回答1:def newid(self):self.id = self.id + 1 return A(self.id)
這個(gè)必然變呀你要不變干嘛+1應(yīng)該是return A(self.id+1)
回答2:def newid(self):self.id = self.id + 1 # 這里self.id 已經(jīng)是2了return A(self.id)
將y正確的生成
什么是正確的y
相關(guān)文章:
1. angular.js - angular內(nèi)容過長(zhǎng)展開收起效果2. javascript - 一個(gè)是數(shù)組,一個(gè)是對(duì)象,怎么進(jìn)行比較去重?3. css3 - css怎么實(shí)現(xiàn)圖片環(huán)繞的效果4. dockerfile - 為什么docker容器啟動(dòng)不了?5. golang - 用IDE看docker源碼時(shí)的小問題6. docker start -a dockername 老是卡住,什么情況?7. javascript - html 中select如何修改樣式,鼠標(biāo)懸浮時(shí)改變option樣式,有沒有插件啊8. java - 在outofmemory 的情況下如何獲取heap dump9. javascript - 你們?cè)鯓訉?shí)現(xiàn)前端分頁(yè)的?10. node.js - npm init無(wú)法一直回車。到version就卡主不動(dòng)了
