所以我有以下代码:
@dataclass
class User:
name: str
age: int
User类应该对应于数据库中某个表,其中name字段是主键。我想要以下类型提示:
@dataclass
class User:
name: Key[str]
age: int
因此,我可以在代码中进一步检查字段的类型提示以查找主键的名称。我希望Key [T]解析为T,这样正常的类型提示将起作用并检查所提供的类型确实是str。 我在打字模块的文档中进行了一些搜索,找不到任何合适的方法。
答案 0 :(得分:0)
如果我正确理解了您的问题,您可能正在寻找typing.NewType
:
Key = NewType("Key", str)
@dataclass
class User:
name: Key
age: int
编辑:您正在寻找Generic NewType。这是mypy回购上的open feature request。
答案 1 :(得分:0)
如果您需要验证,则可以:
from dataclasses import dataclass
from validated_dc import ValidatedDC
@dataclass
class User(ValidatedDC):
name: str
age: int
input_data = {
'name': 123, # <-- not str!
'age': 30
}
user = User(**input_data)
assert not user.is_valid()
assert user.get_errors().get('name') # <-- There is an error in the name field