有没有办法将某些 TypeVar 约束为数据类?例如:
A = TypeVar('A', dataclass) # Wrong code!
使用现代 mypy 和 Pyright 版本,可以将数据类与其他类区分开。
@dataclass
装饰器添加了 __dataclass_fields__
类属性。可以定义需要此属性的协议。
from dataclasses import Field
from typing import ClassVar, Any, Protocol
class DataclassInstance(Protocol):
__dataclass_fields__: ClassVar[dict[str, Field[Any]]]
T = TypeVar('T', bound=DataclassInstance)