【发布时间】:2022-01-06 16:11:11
【问题描述】:
我有一个需要类似日期的对象列表的函数,我正在寻找一种添加良好类型提示的方法。
def get_prices(dates):
...
我现在用的是
def get_prices(dates: list[str]) -> list[float]:
但我对此并不是 100% 满意。
我可以创建一个类DateLike,然后这样做:
def get_prices(dates: list[DateLike]) -> list[float]:
但不确定这是否合适,因为根本不涉及 DateLike 类(类型提示除外)。
那时我可以做到:
def get_prices(dates: IterableOfObjectsThatCanBeCastToDatesByPandas) -> list[float]:
但随后类型提示就失去了所有意义。
【问题讨论】:
-
当你说类似日期的对象时,你能给我们举个对象类型的例子吗?你的意思是像
datetime和timedelta这样的类型吗? -
在这种情况下,我的代码支持日期字符串:
'2020-10-05'或日期时间对象:datetime(2020, 10, 5) -
但我的问题更笼统:当内置类型不够用时,我有什么选择。我想在 Python 3.10 中我可以做到
get_prices(dates:list[str|datetime])->list[float],但这仍然感觉不完整。我想我将输入验证与类型提示混为一谈。 -
这能回答你的问题吗? Why can't List contain multiple types?
-
@MycchakaKleinbort 我建议不要同时接受。接受
datetime对象,并让调用者负责从字符串创建它们。
标签: python type-hinting