Python类不工作

Python类不工作,python,class,Python,Class,如何在不更改原始类的情况下修改类的副本 当我上这样的课时: class enemymob: def __init__(self, name, level, damage, health, maxhealth, armour): self.name = name self.level = level self.damage = damage self.health = health self.maxhealt

如何在不更改原始类的情况下修改类的副本

当我上这样的课时:

class enemymob:
    def __init__(self, name, level, damage, health, maxhealth, armour):
        self.name = name 
        self.level = level
        self.damage = damage
        self.health = health
        self.maxhealth = maxhealth
        self.armour = armour

Goblin = enemymob("Goblin", 1, 10, 50, 50, 5)
然后我设置了敌人=妖精:

enemy = Goblin
当我修改敌人的值时,它也会更改实例地精的值。但是对于我的代码,我需要实例Goblin的值保持不变,并且只更改其副本敌人的值。我该怎么做

enemy.damage += 100
print(enemy.damage)
print(Goblin.damage)

110                                                                                                                                                                                                 
110                                                                                                                                                                                                 


Process exited with code: 0

问题是
地精
敌人
指向同一个东西。当你这样做的时候,
Goblin=enemymob(“Goblin”,1,10,50,50,5)
后跟
敌方=地精
地精
都将指向同一对象。

语句
敌方=地精
使
敌方
变量指向与
地精
变量相同的实例。如果您想要一个可以独立操作的新实例,则必须复制它,例如,使用
copy
模块:

import copy
enemy = copy.copy(Goblin)

您可以使用
deepcopy
制作对象的副本-

from copy import deepcopy

enemy = deepcopy(Goblin)

在这种情况下,您可以将您的变量“敌人”和“地精”设置为同一个对象。创建两个这样的对象:

enemy = enemymob("enemy", 1, 10, 50, 50, 5)
Goblin = enemymob("Goblin", 1, 10, 50, 50, 5)

也许您希望实例化两个新对象,而不是创建副本。