首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在asdict中获取@property方法?

如何在asdict中获取@property方法?
EN

Stack Overflow用户
提问于 2018-08-08 03:12:56
回答 2查看 602关注 0票数 5

我有一些类似的东西:

代码语言:javascript
复制
from attr import attrs, attrib

@attrs
class Foo():
    max_count = attrib()
    @property
    def get_max_plus_one(self):
         return self.max_count + 1

现在,当我这样做的时候:

代码语言:javascript
复制
f = Foo(max_count=2)
f.get_max_plus_one =>3

我想将其转换为dict:

代码语言:javascript
复制
{'max_count':2, 'get_max_plus_one': 3}

当我使用attr.asdict(f)时,我得不到@property。我只得到了{'max_count':2}

实现上述目标的最干净的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-08-08 14:17:57

恐怕attrs目前还不支持这一点。你可能想在https://github.com/python-attrs/attrs/issues/353上关注/评论,它可能最终会给你想要的东西。

票数 2
EN

Stack Overflow用户

发布于 2021-01-25 21:21:22

如果您定义:

代码语言:javascript
复制
import attr

def attr2dict(inst):
    dic = attr.asdict(inst)
    dic.update({n: p.__get__(inst) for n, p in vars(type(inst)).items() if isinstance(p, property)})
    return dic

然后你就会得到你想要的东西:

代码语言:javascript
复制
>>> attr2dict(f)
{'max_count': 2, 'get_max_plus_one': 3}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51733882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档