我有一个返回pytz.timezone('...')对象的函数。例如下面的函数,返回值的类型提示应该是什么?
pytz.timezone('...')
def myfunc(tz_str: str) -> ????: return pytz.timezone(tz_str)
一般来说,我们应该如何从已安装的模块中输入提示对象?
py49o6xq1#
由于您已经将参数硬编码为timezone,因此您知道结果将是pytz.UTC的示例。
timezone
pytz.UTC
def myfunc() -> pytz.UTC: return pytz.timezone('UTC')
例如,如果参数直到运行时才知道,
def myfunc(tz: str) -> ...: return pytz.timezone(tz)
最好的办法是使用与timezone本身定义的相同的返回类型,可以在Typeshed中找到。(存根文件似乎在存根本身中定义了部分类型,而不是使用实际库中定义的类型。我没有深入研究源代码,看看到底应该使用什么或如何使用;我把它留给读者作为练习。)
1条答案
按热度按时间py49o6xq1#
由于您已经将参数硬编码为
timezone
,因此您知道结果将是pytz.UTC
的示例。例如,如果参数直到运行时才知道,
最好的办法是使用与
timezone
本身定义的相同的返回类型,可以在Typeshed中找到。(存根文件似乎在存根本身中定义了部分类型,而不是使用实际库中定义的类型。我没有深入研究源代码,看看到底应该使用什么或如何使用;我把它留给读者作为练习。)