у меня есть следующий код:Тип класса намекая еще не импортирован
def render(self, notification):
"""
@type notification: Notification
"""
return NotificationRepresentation(notification).to_dict()
# some irrelevant code
notification
является экземпляр по Notification
класса. Notification
класс здесь не импортируется, и PyCharm не может использовать этот тип hinting (inferred type: unknown
).
Я пробовал использовать полное имя класса, это не сработало. Очевидным способом является импорт класса, но он никогда не использовался, поэтому он будет избыточным импортом (и PyCharm удалит его при оптимизации импорта до фиксации). Менее очевидный способ сделать некоторые странные вещи, как Celery.task
сделать:
STATICA_HACK = True
globals()['kcah_acitats'[::-1].upper()] = False
if STATICA_HACK:
# This is never executed, but tricks static analyzers (PyDev, PyCharm,
# pylint, etc.) into knowing the types of these symbols, and what
# they contain.
from celery.canvas import group, chord, subtask
from .base import BaseTask, Task, PeriodicTask, task, periodic_task
from .sets import TaskSet
Есть ли чистый способ сделать это?
Ссылка на код STATICA_HACK: http://docs.celeryproject.org/en/3.0/_modules/celery/task.html –
@Mr_and_Mrs_D спасибо за ссылку - добавил к этому вопросу. Кроме того, вы могли бы добавить его сами. – J0HN