如何修改映射(lambda:)内部的Python DataClass



我想修改映射/lambda中的数据类(dataclass_json(。有了字典,你可以在lambda中执行dict.update({quot;key":quot;value"}(,但如何在没有的情况下更新数据类的值

MyDataClass.name = "class name" # this works outside a lambda

(下面的例子是我所知道的不正确的语法(

repositories_list: List[MyDataClass]
_ = list(map(lambda repository: repository.name = my_func(repository), repositories_list))

当然,我不能只使用=,那么这是怎么做到的呢?

您可以直接访问setattr,即在属性分配期间执行实际工作的函数:

list(map(lambda r: setattr(r, "name", my_func(repository)), repositories_list))

这个模式不是特定于数据类的,它适用于任何python对象。

用替换数据类解决了它

from dataclasses import replace
repositories_list = list(map(lambda repository: replace(repository, name=my_func(repository)), repositories_list))

最新更新