如何声明 TypeVar 为不可变

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

在Python中,如何创建不可变/可变类型变量。我有一个通用协议,它的一些方法应该改变其可变参数类型的输入,而有些则不应该。我如何在我的代码中声明这一点?

python types immutability
1个回答
0
投票

对于不可变数据类,您可以使用:

from typing import TypeVar
from dataclasses import dataclass

T = TypeVar('T')

@dataclass(frozen=True)
class ImmutableGenericClass:
    value: T

# Example usage:
int_item = ImmutableGenericClass[int](value=1)
str_item = ImmutableGenericClass[str](value="example")

对于一般类型提示的不变性,请尝试:

from typing import NamedTuple, TypeVar

T = TypeVar('T')

class ImmutableGenericTuple(NamedTuple):
    value: T

# Example usage:
int_item = ImmutableGenericTuple[int](value=1)
str_item = ImmutableGenericTuple[str](value="example")

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