看到了一个将Python中的对象转换成字典的方法.
class TestClass:
def __init__(self):
self.a = 1
self.b = 2
这里我们定义一个类TestClass, 它有两个属性a和b.
tc = TestClass() print(tc.a) # 1 print(tc.b) # 2
tc是类TestClass的一个实现, 也是一个对象. 我们调用它的属性时, 需要这样写: tc.a, tc.b.
而使用Python的内置函数vars就可以将一个对象映射成字典类型:
tc_dict = vars(tc)
print(tc_dict) # {'a': 1, 'b': 2}
print(tc_dict['a'], tc_dict['b']) # 1 2
这样做的用处之一, 是可以将对象的属性打印成json格式的字符串, 方便存储成日志文件.
import json
json.dumps(tc_dict) # '{"a": 1, "b": 2}'
这里插一句题外话, 也可以通过修改类的__repr__或者__str__属性, 来获得更加灵活的输出格式.
class TestClass:
def __init__(self):
self.a = 1
self.b = 2
def __repr__(self):
return f"{{'a' : {self.a}, 'b' : {self.b}}}"
tc = TestClass()
print(tc) # {'a' : 1, 'b' : 2}
一点想法: 通过重写类中的__dict__方法可以拓展字典的转换方法.



