搜尋

首頁  >  問答  >  主體

python - 透過類別的方法傳回自身新的實例

定義一個類別A,並且有一個自身ID 1的方法,程式碼如下:

class A(object):
    def __init__(self, id):
        self.id = id
    def newid(self):
        self.id = self.id + 1
        return A(self.id)

將實例x定義為類別A,id為1,列印x.id:

[In]:
x = A(1)
print(x.id)

[Out]:
1

現在想建立一個同樣也是類別A的實例y, 透過類別A的newid方法進行建立:

[In]:
y = x.newid()
print(y.id)

[Out]:
2

可以得到準確的y的ID為2, 但​​是發現x的id也被修改了:

[In]:
print(x.id)

[Out]:
2

請問如何實現在不修改原始實例x的情況下將y正確的生成,謝謝!

漂亮男人漂亮男人2775 天前656

全部回覆(2)我來回復

  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:55:17

    def newid(self):
    self.id = self.id + 1
    return A(self.id)

    這個必然變呀
    你要不變幹嘛+1
    應該是return A(self.id+1)

    回覆
    0
  • 某草草

    某草草2017-05-18 10:55:17

    def newid(self):
            self.id = self.id + 1    # 这里self.id 已经是2了
            return A(self.id)

    將y正確的生成

    什麼是正確的y

    回覆
    0
  • 取消回覆