Подавить предупреждение PyCharm, когда переменная назначается как None в методе init - PullRequest
2 голосов
/ 27 октября 2019

Я использую PyCharm для кодирования на Python. В классе у меня есть несколько полей, значение которых не будет передано при создании экземпляра класса, но будет установлено позже. Итак, в методе __init__() я устанавливаю их значения равными None. Кроме того, чтобы использовать автоматическое завершение кода PyCharm, я указываю тип данных этих полей.

class SelectFrame():
    index_data: pandas.DataFrame
    index_filepath: Path

    def __init__(self):
        self.index_data = None
        self.index_filepath = None

Но при этом PyCharm выдает предупреждение Expected Type 'DataFrame', got 'None' instead. Как я могу удалить это предупреждение?

Примечание: я не хочу вообще подавлять предупреждение TypeChecker, а также не хочу помещать комментарий # noinspection PyTypeChecker везде, где я использую такой код. У меня вопрос
Правильна ли инициализация None? Или есть лучший способ инициализировать и избежать предупреждения?

1 Ответ

4 голосов
/ 27 октября 2019

Инициализация None верна (если вы не можете знать это во время создания), но вы объявили index_data как pandas.DataFrame, а None не является pandas.DataFrame , поэтому он предупреждает вас.

Выследует расширить объявление типа, чтобы оно также включало None, используя Необязательно .

from typing import Optional

class SelectFrame():
    index_data: Optional[pandas.DataFrame]
    index_filepath: Optional[Path]

    def __init__(self):
        self.index_data = None
        self.index_filepath = None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...