类型提示类尚未导入

问题描述 投票:0回答:1

我有以下代码:

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

有什么干净的方法可以做到这一点吗?

python pycharm python-typing
1个回答
2
投票

提供您要引用的类的完整路径。

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 中提供完整路径对我有用。尝试升级;)

© www.soinside.com 2019 - 2024. All rights reserved.