我有一个字典注释
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"
之间没有差异。它们都是弦。类型注释的存在是为了静态地检查类型,而不是字符串格式。
唯一不适合的情况是Literal
s,但它们只与常量相关。