检查字符串是否为字符串文字类型

pir*_*pir 9 python types typing typechecking

我们广泛使用静态类型检查,但我们也需要一些简单的运行时类型检查。我很乐意使用我们的静态类型进行运行时类型检查。我见过 typeguard 和其他库,但我更喜欢更简单的东西。

我在下面尝试过,但assert value in expected_type没有意义。如何创建一个简单的函数来检查字符串是否在 Python 字符串文本中?

from typing_extensions import Literal

def check_str_in_literal(value: str, expected_type: Literal):
    assert value in expected_type

Gender = Literal["Male", "Female", "Other"]
def print_gender(gender: Gender):
    print(gender)

# Unknown string as it's been retrieved from elsewhere
strRetrievedFromDB = "Male"  # type: ignore

check_str_in_literal(strRetrievedFromDB, Gender)
print_gender(strRetrievedFromDB)
Run Code Online (Sandbox Code Playgroud)

Jos*_*ier 10

Python 3.8 的引入typing.get_args(tp),使得这成为可能:

assert value in get_args(expected_type)
Run Code Online (Sandbox Code Playgroud)