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)
也许您希望实例化两个新对象,而不是创建副本。