我有以下代码:
def render(self, notification):
"""
@type notification: Notification
"""
return NotificationRepresentation(notification).to_dict()
# some irrelevant code
notification
是 Notification
类实例。 Notification
此处未导入类,PyCharm 无法使用该类型提示 (inferred type: unknown
)。
我尝试过使用完整的类名,但没有成功。显而易见的方法是导入该类,但它从未使用过,因此这将是多余的导入(PyCharm 将在提交之前优化导入时删除它)。不太明显的方法是做一些奇怪的事情,比如
Celery.task
do:
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
有什么干净的方法可以做到这一点吗?
提供您要引用的类的完整路径。
def render(self, notification, my_subtask):
"""
@type notification: full.path.to.Notification
@type my_subtask: celery.canvas.subtask
"""
return NotificationRepresentation(notification).to_dict()
# some irrelevant code
这可能是您的旧安装的问题,因为在 PyCharm 3.0 中提供完整路径对我有用。尝试升级;)