【问题标题】:For a class derived from dict, can I deepcopy only the aspect that is derived from dict?对于从 dict 派生的类,我可以只深度复制从 dict 派生的方面吗?
【发布时间】:2014-11-07 09:47:52
【问题描述】:

我有一个从dict 派生的类的对象,并添加了一些功能。然而,在某个时间点之后,它仅被程序的某些部分用作dict,因此附加功能对程序的这些部分没有任何作用。

因此,为了确保没有被调用者能够操纵我的类实例的实际 dict 方面,我正在考虑使用 copy.deepcopy“提取”其 dict 方面。

  1. 这可能吗?
  2. 如何实现?

在 C++ 中,我可以通过 dynamic_cast<> 获得我想要的类型。

【问题讨论】:

  • 见鬼,就做dict(instance_of_subclass)dict 会认为它是它自己的一个,只要你没有自定义迭代到dict 不会接受它的地步。
  • @Lord_DeathMatch:我没有自定义这方面。这是否仍需要后续的deepcopy
  • 不确定,取决于您是否不希望新字典中的对象影响dict-like 对象中的原始对象。取决于您的用例
  • @Lord_DeathMatch:好的,那是的。我不希望他们受到影响。请写下来作为答案。我目前正在验证它是否按预期工作。然后将能够投票和接受;)

标签: python dictionary python-2.x deep-copy


【解决方案1】:

dict 对象将接受任何产生(key,value) 元组的可迭代对象(或任何类似字典的对象,请参阅1)。假设没有在自定义对象上修改迭代,你应该可以这样做;

import copy
dict_version = copy.deepcopy(dict(dict_like_object))

【讨论】:

    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2015-05-10
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多