有很多与此相关的问题,但没有一个问题能给我确切的答案。
假设我有一个这样的课程:
import json
class MyClass:
def __init__(self, name, some_type):
self.name = name
self.some_type = some_type
@property
def prop(self):
return self.name + self.some_type
def to_json(self):
return json.dumps(
self, default=lambda o: o.__dict__
)
el1 = MyClass('test', '_to_json')
我现在想获得一个JSON表示,其中包括name
,some_type
也prop
。
该函数to_json
当前仅返回
{"name": "test", "some_type": "_to_json"}
因此prop
缺少(以及中的vars(el1)
)。
dir
返回(以及所有__
)
'name', 'prop', 'some_type', 'to_json'
我不希望to_json
在列表中。
有没有一种直接的方法来更新我的to_json
功能,以便它返回
{"name": "test", "some_type": "_to_json", "prop": "test_to_json"}
?
您可以prop
在__class__.__dict__
以下位置找到:
import json
class MyClass:
def __init__(self, name, some_type):
self.name = name
self.some_type = some_type
@property
def prop(self):
return self.name + self.some_type
def to_json(self):
def get_object_dict(obj):
d = obj.__dict__.copy()
for key, value in obj.__class__.__dict__.items():
if isinstance(value, property):
d[key] = getattr(obj, key)
return d
return json.dumps(
self, default=lambda o: get_object_dict(o)
)
el1 = MyClass('test', '_to_json')
print(el1.to_json())
输出:
{"prop": "test_to_json", "some_type": "_to_json", "name": "test"}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句