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
определяется как переменная класса. Когда ты бежишь dice_spin
, ваш класс создает локальную переменную в вашей области, также называемой fish_sum
, но это не относится к вашему классу fish_sum
переменная.
Как отмечает DeepSpace, вы можете ссылаться на эту переменную с помощью self
, но вам может быть лучше не использовать переменную общеклассового класса, так как, похоже, она зависит от конкретного экземпляра. Для этого создайте его в __init__
с self
,