Подсказки типа членов класса Python - PullRequest
0 голосов
/ 22 декабря 2018

Я использую PyCharm для разработки приложения на Python.Я пытаюсь использовать как можно более современный Python, поэтому я использую новые возможности Python.У меня проблема с type hinting.

Давайте посмотрим на мой DataAnalyzer класс:

class DataAnalyzer:

    def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
        self.train_data = train_data
        self.test_data = test_data

    def analyze(self):
        pass

Теперь PyCharm рассылает мне желтые лампочки, желая, чтобы я добавил аннотации типов вself.train_data и self.test_data.Если я нажму на это сообщение, PyCharm добавит две строки в начале моего класса:

class DataAnalyzer:
    train_data: pd.DataFrame
    test_data: pd.DataFrame

    def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
        self.train_data = train_data
        self.test_data = test_data

    def analyze(self):
        pass

Полагаю, теперь это выглядит лучше, но AFAIK, записывая эти переменные, я делаю их static .

Я думал о том, чтобы комментировать такие типы:

class DataAnalyzer:

    def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
        self.train_data: pd.DataFrame = train_data
        self.test_data: pd.DataFrame = test_data

    def analyze(self):
        pass

Что точно не ясно, но я не делаю своих учеников статичными, когда я этого не делаюхочу.

Я знаю, что аннотирование типов в сигнатуре метода делает это еще раз, когда я просто назначаю их, является излишним, но я прошу общее правило.Должен ли я аннотировать те типы, которые PyCharm предлагает мне, или я должен сделать это в строке?

...