如何使一个未冻结的数据类实例可以使用?

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

使用qazxsw poi(默认行为)定义数据类,然后实例化此类的对象时,是否有办法使此对象可以清除?

Why do I need this?

在Python 3.7之前,我使用了命名元组而不是数据类,我曾经使用frozen=False查找重复项,但我不能再使用它了。出于其他原因,我不想在数据类上使用set()

python python-dataclasses
1个回答
2
投票

有一个参数:

frozen=True

不过你可能应该使用@dataclass(unsafe_hash=True) class Whatever: ... 。如果需要更新冻结的数据类实例上的属性,可以使用frozen=True构造新对象:

dataclasses.replace

您还可以使用可变数据类实例和new_thing = dataclasses.replace(old_thing, var=new_val) 在需要可清洗时获取元组。但请注意 - dataclasses.astuple有一堆奇怪的复制行为,因此您可以获得如下行为:

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