我正在努力研究一些代码,我正在开始制作一些代码,但是我在项目中测试了一小部分重要的东西,但它似乎并不像我想要的那样工作。 这是我测试的代码的一小部分:
class Fighter_Fish(object): #class to manage all fishes and their stats
fish_sum = 0
def __init__(self,fish_name, fish_type, dice_list ,skill, trigger):
self.fish_name = fish_name
self.fish_type = fish_type
self.dice_list = dice_list
self.skill = skill
self.trigger = trigger
def dice_spin(self): #commences dice spin for current turn
fish_sum = random.choice(self.dice_list)
if fish_sum == "W":
fish_sum = 0
self.skill_commence()
clown_fish_list = ["1","2","2","2","3","3"]
clown_fish = Fighter_Fish("Clown_Fish","Def",clown_fish_list,"None","None")
clown_fish.dice_spin()
print (clown_fish.fish_sum)
打印应从我的测试列表中打印其中一个字符串,但它返回0
我是否使用了类函数错误?
答案 0 :(得分:1)
将fish_sum
更改为self.fish_sum
中的def dice_spin
。
答案 1 :(得分:0)
在您的班级中,您将fish_sum
定义为类变量。当您运行dice_spin
时,您的类会在您的范围内创建一个局部变量,也称为fish_sum
,但这并不是指您的类范围fish_sum
变量。
如DeepSpace所述,您可以使用self
引用该var,但最好不要使用类范围变量,因为它似乎是特定于实例的。为此,请使用__init__
在self
中对其进行实例化。