Literal:必须是可选值中的一个
1. 检查值是否符合
有时候不想使用enum来规定,但是需要对传入的参数进行检查:
from typing import Literal
class Person: def __init__( self, name: str, gender: Literal["male", "female"] ): self.name = name self.gender = gender
a = Person("Bob", "male") b = Person("Bob", "woman")
|
2. 变量不符合Literal类型
直接传入字面量是可以的,但是如果使用变量就会出错:
from typing import Literal
class Person: def __init__( self, name: str, gender: Literal["male", "female"] ): self.name = name self.gender = gender
g = "female" a = Person("Bob", g)
|
3. 对变量进行Literal标注
为了解决上面的问题,对变量也需要标注相同的Literal类型:
from typing import Literal
class Person: def __init__( self, name: str, gender: Literal["male", "female"] ): self.name = name self.gender = gender
g: Literal["male", "female"] = "female" a = Person("Bob", g)
|
4. 类型别名
更普遍意义上,为了保证代码的可用性,会对类型进行别名,在一处定义,多处使用:
from typing import Literal
GenderType = Literal["male", "female"]
class Person: def __init__( self, name: str, gender: GenderType ): self.name = name self.gender = gender
g: GenderType = "female" a = Person("Bob", g)
|