python random.choice在一个类中

时间:2015-08-10 14:24:59

标签: python class random choice

我正在努力研究一些代码,我正在开始制作一些代码,但是我在项目中测试了一小部分重要的东西,但它似乎并不像我想要的那样工作。 这是我测试的代码的一小部分:

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

我是否使用了类函数错误?

2 个答案:

答案 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中对其进行实例化。