我想创建一个类,它有一个枚举作为属性。此枚举应具有字符串表示形式,在将使用枚举属性的类实例转储为 JSON 字符串时,该表示形式显示为人类可读的值。在下面的最小工作示例中,我以三种不同的方式创建了三个枚举。
反序列化后,每个属性都向我们表明它来自枚举,但带有字符串表示形式的枚举除外。它只是一个字符串。
如果不可能实现这样的结构,我想知道为什么。
如果你想测试它,你必须安装jsons并attrs使用
pip install attrs jsons
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到一个最小的工作示例。
import jsons
import attr
from enum import Enum
# ----------------------------------------------------
# create enumeration with the help of a dictionary
fruits = {
"PINEAPPLE": "PINEAPPLE",
"APPLE": "APPLE",
"ORANGE": "ORANGE",
"BANANA": "BANANA",
}
Fruit = Enum("FRUITS", fruits)
# ----------------------------------------------------
# create a classical enumeration
class Nut(Enum):
PEANUT = 1
HAZELNUT = 2
CASHEW = 3
WALNUT = 4
# ----------------------------------------------------
# create enumeration with a …Run Code Online (Sandbox Code Playgroud) python enums serialization json-deserialization python-attrs
我有一个字典,在其值中保存对象.我想str在字典上使用该函数,以便它将递归地运行在字典中的所有其他对象上.
例如,我有以下对象:
>>> class Temp(object):
... def __init__(self):
... self._item = 8
... def __str__(self):
... return str(self._item)
...
>>> t = Temp()
>>> str(t)
'8'
Run Code Online (Sandbox Code Playgroud)
我创建一个字典并将对象放入其中:
>>> dict = {}
>>> dict['object'] = t
Run Code Online (Sandbox Code Playgroud)
现在,当我在字典上使用str函数时,我得到以下内容:
>>> str(dict)
"{'object': <__main__.Temp object at 0x7fa08889f910>}"
Run Code Online (Sandbox Code Playgroud)
但我想得到这个:
>>> str(dict)
"{'object': 8}"
Run Code Online (Sandbox Code Playgroud)