比较 DeepCopy 中的 Python 对象

Bra*_*ade 5 python assert compare copy

有没有办法将 Python 对象与深度复制生成的对象进行比较?

例如:

    import copy 

    original_object = SomeObject()
    cloned_object = copy.deepcopy(original_object)
    assertDeepCopy(original_object, cloned_object)
Run Code Online (Sandbox Code Playgroud)

Pat*_*ins 1

我相信这就是您所要求的:

def deep_compare(left, right):
    try:
        if not left.__dict__:
            return left == right

        for key in left.__dict__:
            if key not in right.__dict__:
                return false
            else:
                return deep_compare(left[key], right[key])
    except (AttributeError, TypeError):
        return left == right 
Run Code Online (Sandbox Code Playgroud)

但是,请注意,这可能在很多地方出错:如果对象没有以==您喜欢的方式定义,您将不会得到您想要的答案。