如何在Python中使用数据类约束创建TypeVar(通用)类型?

问题描述 投票:0回答:1

有没有办法将某些 TypeVar 约束为数据类?例如:

A = TypeVar('A', dataclass) # Wrong code!
python python-3.x generics typing
1个回答
0
投票

使用现代 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)

(来源:typeshed)

© www.soinside.com 2019 - 2024. All rights reserved.