对象1和对象2,如果两个对象不是同一个对象则不比较,否则对这两个对象的字段进行比较并返回不同的字段值,若该对象的字段仍为对象则递归进行遍历,如果为list类型数据则递归比较list中的属性值
时间: 2023-12-14 21:39:51 浏览: 66
好的,这是一个比较对象的函数,可以用于比较两个对象的属性值是否相同。函数的实现可以采用递归的方式,处理对象的属性值和list类型的数据。下面是一个示例代码:
```python
def compare_objects(obj1, obj2):
if obj1 is not obj2:
return None
diffs = {}
for key in obj1.__dict__:
if key in obj2.__dict__:
val1 = obj1.__dict__[key]
val2 = obj2.__dict__[key]
if isinstance(val1, list) and isinstance(val2, list):
diff_list = []
for i in range(len(val1)):
diff = compare_objects(val1[i], val2[i])
if diff:
diff_list.append(diff)
if diff_list:
diffs[key] = diff_list
elif isinstance(val1, object) and isinstance(val2, object):
diff = compare_objects(val1, val2)
if diff:
diffs[key] = diff
elif val1 != val2:
diffs[key] = (val1, val2)
return diffs
```
这个函数接受两个对象作为参数,然后递归地比较它们的属性值。如果两个对象不是同一个对象,则返回 None。如果两个对象的某个属性值不同,则将该属性名和不同的值存储在 diffs 字典中。如果某个属性是一个对象或者列表,那么递归地比较该对象或列表中的属性值。最后返回 diffs 字典,其中包含不同的属性名和值。
阅读全文
相关推荐


















