今天偶然看到枚举的一种写法,我测试后感觉有些奇怪
import enum
class TestEnum( str,enum.Enum):
A = "a"
这里同时继承了 str 和 Enum , 我测试了一下语句,
repr(TestEnum.A)
>>> "<TestEnum.A: 'a'>"
str(TestEnum.A)
>>> TestEnum.A'
TestEnum.A == 'a'
>>> True
这里的 TestEnum.A == 'a' 结果为 True , 是怎么判断的?
如果 TestEnum 是 dataclass 类的变量,在 json dumps 时也会自动转换,这是怎么做到的?
from dataclasses import dataclass, asdict
import json
@dataclass
class A:
a: TestEnum=None
test_a = A(TestEnum.A)
asdict(test_a)
>>> {'a': <TestEnum.A: 'a'>}
json.dumps(asdict(test_a))
>>> {"a": "a"}
python 版本 3.9.16