Python 键入提示Don';不要在装饰师中评估

Python 键入提示Don';不要在装饰师中评估,python,python-3.x,pycharm,typehints,Python,Python 3.x,Pycharm,Typehints,给定 如果我定义了一个新的ACallback类型,它以a class A: pass class B: pass 并定义一个以B from typing import Callable ACallback = Callable[[A], None] 如果我尝试使用b_callback,其中需要ACallback,我会收到类型提示警告-正如预期的那样 def b_callback(b: B): pass 并传递一个不匹配的函数 def test2(callback

给定

如果我定义了一个新的
ACallback
类型,它以
a

class A:
    pass

class B:
    pass
并定义一个以
B

from typing import Callable

ACallback = Callable[[A], None]
如果我尝试使用
b_callback
,其中需要
ACallback
,我会收到类型提示警告-正如预期的那样

def b_callback(b: B):
    pass
并传递一个不匹配的函数

def test2(callback: ACallback):
    def decorate(f):
        def new_f(*args, **kwargs):
            return f(*args, **kwargs)
        return new_f
    return decorate
@test2(u回调)#这似乎是PyCharm中的一个bug(或“缺少功能”)。我试过这个程序:

@test2(the_callback)  # <-- No type hint errors
def decorator_test():
    pass
使用最新版本的
mypy
,结果如下:

import typing

ACallback = typing.Callable[[int], None]

def test2(callback: ACallback):
    def decorate(f):
        def new_f(*args, **kwargs):
            return f(*args, **kwargs)
        return new_f
    return decorate


def foo(s: str):
    pass


test2(foo)


@test2(foo)
def bar():
    pass
i、 e.两次使用都导致了错误


如果你想与PyCharm一起使用,至少有2个不同的插件用于PyCharm集成;一个被命名,另一个被命名,即

我会考虑Dropbox一个“官方MyPy背书插件”,意思是… 这似乎是PyCharm中的一个bug(或“缺少功能”)。我试过这个程序:

@test2(the_callback)  # <-- No type hint errors
def decorator_test():
    pass
使用最新版本的
mypy
,结果如下:

import typing

ACallback = typing.Callable[[int], None]

def test2(callback: ACallback):
    def decorate(f):
        def new_f(*args, **kwargs):
            return f(*args, **kwargs)
        return new_f
    return decorate


def foo(s: str):
    pass


test2(foo)


@test2(foo)
def bar():
    pass
i、 e.两次使用都导致了错误


如果你想与PyCharm一起使用,至少有2个不同的插件用于PyCharm集成;一个被命名,另一个被命名,即


我会考虑Dropbox一个“官方MyPy背书插件”,意思是… 你用什么做类型分析?PyCharm内置处理?到目前为止,mypy在我的测试中似乎处理装饰程序很好。这是一个已知的问题,您使用什么来进行类型分析?PyCharm内置处理?到目前为止,mypy在我的测试中似乎处理得很好。这是一个众所周知的感谢答案。只是给未来读者一个关于插件的评论:

mypy
plugin在最新的PyCharm版本(183.4)中被破坏了。dropbox插件实际上并没有增强视觉内置类型提示,只是提供了一种更容易运行mypy的方法。以下是对未来读者关于插件的评论:
mypy
plugin在最新的PyCharm发行版(183.4)中被破坏。dropbox插件实际上并没有增强视觉内置类型提示,只是提供了一种更容易运行mypy的方法