【发布时间】:2021-11-27 01:12:40
【问题描述】:
我有一个函数,我在内部调用另一个函数,其参数与我的函数中的参数相同。类型是由内部函数定义的,我想控制它。
有什么方法可以像内部函数一样使用相同类型的提示?
我尝试了什么
from typing import get_type_hints, Any
def inner(inner_param: int) -> int:
return inner_param
a = get_type_hints(obj=inner).get("inner_param", Any)
def outer(my_param: a) -> None:
result = inner(my_param)
print(result)
outer("asd") # Alert should go here
虽然a 是类
代码有问题吗?或者这还不可能?还是静态类型分析工具的问题?
在 python 文档中,声明 get_type_hints 不适用于别名,但是
PEP 563 (from __future__ import annotations) 和以后的评估可以解决它。
如果我将 int 类型转换为 str(或使用 annotation 中的 str 值),它仍然无法正常工作。
用例是,如果将来内部函数发生变化,我不想在这里有坏类型。
【问题讨论】:
标签: python function parameters annotations type-hinting