深拷贝 - 带矢量的对象

时间:2017-09-10 21:08:28

标签: python deep-copy

我刚刚输入了代码。我希望John只是team_B的成员。当我运行代码时,John正在加入两个团队,即使我使用“deepcopy”:

import copy

class team:
    players = []

team_A = team()

team_A.players.append("Tom")
team_A.players.append("Peter")
team_A.players.append("Mario")

team_B = copy.deepcopy(team_A)
team_B.players.append("John")

任何人都可以解释这个并帮我修复它吗?

1 个答案:

答案 0 :(得分:3)

目前players是一个在所有团队对象之间共享的类变量,您希望每个实例拥有自己的播放器列表。

class Team:
    def __init__(self):
        self.players = []

__init__代码在对象构造上运行,请注意self关键字,这指的是团队的当前实例。