当我更改stats.hp
类的base_stats.hp
或Creature
值时,它会一次设置两个值,这是一个问题因为它意味着我无法将生物的hp重置为它的基础值。以下是处理此
class Stats:
def __init__ (self,hp,height,strength,speed,skill,agility,perception):
x = random.randint(-2,2)
self.hp = hp+x
x = random.randint(-10,10)
self.height = height+x
x = random.randint(-2,2)
self.strength = strength+x
x = random.randint(-2,2)
self.speed = speed+x
x = random.randint(-1,1)
self.skill = skill+x
x = random.randint(-2,2)
self.agility = agility+x
x = random.randint(-2,2)
self.perception = perception+x
class Creature:
def __init__ (self,name,stats,top_image,side_image):
self.name = name
self.base_stats = stats
self.stats = stats
# More code here for rest of attributes
问题可能是因为Creature.stats
和Creature.base_stats
引用了相同的stats
变量?
(编辑)
Creature类的stats
中引用的__init__
是Stats
对象
答案 0 :(得分:2)
是。它们引用相同的对象。您可以改用copy。
from copy import copy
self.base_stats = copy(stats)
self.stats = copy(stats)
答案 1 :(得分:0)
您的__init__
函数中的统计信息是Class Stats的对象是否正确?因此,您要将SAME对象分配给self.base_stats和self.stats。因此,对其中任何一个的任何更新都会影响另一个,因为您正在更改您的生物作为属性拥有的ONLY Stats对象。
class Creature:
def __init__ (self,name,stats,top_image,side_image):
self.name = name
self.base_stats = stats
self.stats = stats