Python - 检查签名注解是否属于特定的类。

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

当使用

for sig in inspect.signature.parameters.items():
    if isinstance(sig[1].annotation, inspect._empty):
        print("empty")

我从来没有得到控制台说打印 "空"。即使在使用

print(sig[1].annotation)

前的if子句给我的输出。<class 'inspect._empty'>.我也试过用这样的字符串比较。

if sig[1].annotation == "<class 'inspect._empty'>":
    print("empty")

问题出在哪里?

python annotations
1个回答
2
投票

不要使用 isinstance,只是检查 is inspect._empty

for sig in inspect.signature.parameters.items():
    if sig[1].annotation is inspect._empty:
        print("empty")

或最好使用记录在案的 Signature.emptyParameter.empty. 它们都是一样的,但尽量避免使用受保护的属性,即那些以 _.

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