Pycharm не показывает подсказки методов объекта внутри объекта - PullRequest
0 голосов
/ 01 ноября 2019

Я смотрел учебник по созданию игры RGB и был озадачен тем, почему pycharm не показывает предложения в одном случае.

Дело в том, что я сделал объекты из класса под названием "Заклинание"«вот так

# Create Black Magic
fire = Spell("Fire", 10, 100, "black")
thunder = Spell("Thunder", 10, 100, "black")
blizzard = Spell("Blizzard", 10, 100, "black")
meteor = Spell("Meteor", 20, 200, "black")
quake = Spell("Quake", 14, 140, "black")

# Create White Magic
cure = Spell("Fire", 12, 120, "white")
cura = Spell("Cure", 18, 200, "white")

Затем с этими объектами я помещаю их как один из атрибутов другого объекта (« игрока ») другого класса (Персонажа)

player = Character(460, 70, 80, 50, [fire, thunder, blizzard, meteor, quake, cure, cura])
enemy = Character(1200, 65, 45, 25, [])

ЗатемЯ заставляю пользователя выбрать магический

magic_choice = int(input("Choose your magic")) - 1

magic_dmg = player.magic[magic_choice].generate_damage()

Но когда я пытаюсь написать

magic_dmg = player.magic[magic_choice].generate_damage()

Pycharm не может найти метод ".generate_damage ()", который хранится в другом файле. Код работает, но он не может дать предложения. Какие могут быть причины для этого?

class Character:
    def __init__(self, hp, mp, atk, df, magic):
        self.max_hp = hp
        self.hp = hp
        self.max_mp = mp
        self.mp = mp
        self.atk_l = atk - 10
        self.atk_h = atk + 10
        self.df = df
        self.magic = magic


class Spell:   
    def __init__(self, name, cost, dmg, type):
        self.name = name
        self.cost = cost
        self.dmg = dmg
        self.type = type

    def generate_damage(self):
        mag_l = self.dmg - 15
        mag_h = self.dmg + 15
        return random.randrange(mag_l, mag_h)

1 Ответ

0 голосов
/ 01 ноября 2019

Вы еще не сказали, какой тип self.magic, поэтому нет никакого способа узнать, что это список из Spell s.

Вам необходимо аннотировать атрибут с помощью подсказки типа :

from typing import List

. . . 

# magic is a list of spells
self.magic: List[Spell] = magic
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...