你能读懂这句Union[Type[classA], str,classA, Callable[[classA], bool], List]么?
typing
模块在 Python 中是处理类型注解的关键部分,它提供了许多高级功能来增强代码的可读性和健壮性。
Type[](实际上是Type)
Type
用于表示类型本身,而不是类型的实例。这在需要引用类本身作为参数或返回值的场景中很有用。
from typing import Type
class Agent:
pass
def create_agent(agent_class: Type[Agent]) -> Agent:
return agent_class()
# 使用
agent_instance = create_agent(Agent)
print(isinstance(agent_instance, Agent)) # 输出: True
Callable[]
Callable
用于表示可调用对象,比如函数或方法。它可以指定输入参数和返回值的类型。
from typing import Callable
class Agent:
def __init__(self, name: str):
self.name = name
def is_agent_named(agent: Agent, name: str) -> bool:
return agent.name == name
# 使用Callable指定一个接受Agent和str,返回bool的可调用对象
check_function: Callable[[Agent, str], bool] = is_agent_named
# 调用
agent = Agent("Alice")
print(check_function(agent, "Alice")) # 输出: True
Union[]
Union
用于表示一个值可以是多种类型之一。
from typing import Union, List
class Agent:
pass
def process_input(input_data: Union[Agent, str, List[int]]) -> None:
if isinstance(input_data, Agent):
print("处理Agent实例")
elif isinstance(input_data, str):
print("处理字符串")
elif isinstance(input_data, List):
print("处理整数列表")
# 使用
process_input(Agent())
process_input("Hello&#