python 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 ответа

+ Изменить fish_sum в self.fish_sum в def dice_spin,

В вашем классе у вас есть fish_sum определяется как переменная класса. Когда ты бежишь dice_spin, ваш класс создает локальную переменную в вашей области, также называемой fish_sum, но это не относится к вашему классу fish_sum переменная.

Как отмечает DeepSpace, вы можете ссылаться на эту переменную с помощью self, но вам может быть лучше не использовать переменную общеклассового класса, так как, похоже, она зависит от конкретного экземпляра. Для этого создайте его в __init__ с self,

Другие вопросы по тегам