0

在 Python 中,当你想要你的attrs__dict__ -enhanced 类的属性的字典时,使用和有什么区别attr.asdict()?你应该使用哪一个?例如,在此示例中,它们具有相同的结果:

import attr

@attr.s(auto_attribs=True)
class MyClass:
  x: str

value = MyClass(x="hello")
print(value.__dict__)
# {'x': 'hello'}
print(attr.asdict(value))
# {'x': 'hello'}
4

1 回答 1

2

__dict__是一个实现属性,仅存储每个实例的“直接”属性(因此不会在那里找到属性或其他计算属性)。它只存在于基于 dict 的类型 - 基于插槽的类型根本没有 dict。

attrs.asdictOTHO 使用类型的元数据来获取属性名称列表(因此它将适用于基于槽的类),用于getattr()获取值(因此它将正确检索计算的属性),可以递归“启用 attrs”的属性等。但它当然只适用于启用 attrs 的类型......

于 2020-01-14T09:50:24.317 回答