Почему этот метод не распознается классом? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь написать программу, которая симулирует бой между монстром и героем, используя OOP, и часть этого генерирует статистику для монстра, включая тип элемента, защиту, атаку и имя, но когда я вызываю GetMonsterElement (self, Melement), я получаю

NAMEERROR строка 9, 'GetMonsterElement' не определено

Я приложил код ниже, и я был бы очень признателен если кто-то может объяснить, что я сделал не так.

 import random, time

 class monster:
     def __init__(self):
        self.Melement = self.GenerateMonsterElement(self, Melement)
        self.name = ''
        self.hp = 0
        self.attack = 0
        self.defence = 0
        DisplayMonsterElement(self, Melement)

     def GenerateMonsterElement(self, Melement):
        ElementGen = random.randint(1,3)
        if ElementGen == 1:
           self.Melement = 'Ice'
        elif ElementGen == 2:
           self.Melement = 'Fire'
        elif ElementGen == 3:
           self.Melement = 'Grass'
        return self.Melement

    def DisplayMonsterElement(self, Melement):
       print(self.Melement)

def main():
   ThisBattle = monster()
   monster.Run()

main()

1 Ответ

1 голос
/ 09 марта 2020

Может быть, вы хотели написать это:

import random, time

class monster:
     def __init__(self):
        self.Melement = self.GenerateMonsterElement()
        self.name = ''
        self.hp = 0
        self.attack = 0
        self.defence = 0
        self.DisplayMonsterElement()

     def GenerateMonsterElement(self):
        ElementGen = random.randint(1, 3)
        elements = {1:'Ice', 2:'Fire', 3:'Grass'}
        return elements[ElementGen]

     def DisplayMonsterElement(self):
        print(self.Melement)

def main():
   ThisBattle = monster()
   #monster.Run()

main()

Вы можете использовать dict для выбора Melement вместо if .. elif ..

Я убрал вызовы и объявления методов.

Пока нет monster.Run().

...