Python注解类型为正则表达式模式



我有一个字典注释

class OrderDict(TypedDict):
name: str
price: float
time: str

time:的值将始终格式化为2022-01-01 00:00:00"%Y-%m-%d %H:%M:%S"。我想用类型注释

来表达它

之类的
class OrderDict(TypedDict):
name: str
price: float
time: Pattern["%Y-%m-%d %H:%M:%S"]

通过VSCode智能感知和Pylance实现IDE提示的目标。

是否支持regex定义的类型注释?

不考虑应该或不应该被视为类型的哲学讨论,您所问的问题不受当前类型系统的支持。

这当然是有效的语法,你当然可以编造一些滥用__class_getitem__来返回自己动态创建的子类。从运行时的角度来看,您可以实现所需的逻辑,而不会产生太多问题。

但是没有静态类型检查器会识别出这一点(尤其是),因为它不符合Python中当前关于类型的规范。正如其他人所指出的,从Python类型系统的角度来看,字符串(文字)不被视为类型,因此不能作为类型参数传递给泛型类型。

它不是类型,因此不能表示,也可能不支持。

"%Y""%d"之间没有差异。它们都是弦。类型注释的存在是为了静态地检查类型,而不是字符串格式。

唯一不适合的情况是Literals,但它们只与常量相关。

相关内容

  • 没有找到相关文章

最新更新