python副本(another_obj)是否等同于object().__ dict __。update(antoher_obj .__ dict__)?

时间:2015-06-16 00:14:59

标签: python

看起来copy functionobject().__dict__.update()都会在另一个对象中生成相同的浅层属性。

我能否认为这两种方法在python中是等效的?

obj = copy(another_obj)

相当于下面的代码?:

obj = object().__dict__.update(another_obj.__dict__)

修改 上面的第二个命令实际上不起作用。 它应该修改如下:

class Foo(object):
    pass

another_obj = Foo()
another_obj.att1 = "value1"

与副本()重复:

obj1 = copy(another_obj)

与__dict __。update()

重复
obj2 = Foo()
obj2.__dict__.update(another_obj.__dict__)

obj1和obj2的内容相同:

>>> dir(obj1) == dir(obj2)
True    

是否意味着obj1等同于obj2?

1 个答案:

答案 0 :(得分:0)

我不这么认为

obj = copy(another_obj)

创建一个新对象以将新属性复制到。

from bs4 import BeautifulSoup
soup = BeautifulSoup('<h2>hi</h2>')
soup2 = copy(soup)
print(soup2.__dict__)
  

打印很多东西

但是

obj = object().__dict__.update(another_obj.__dict__)

你需要做一些额外的工作来完成复制

from bs4 import BeautifulSoup
soup = BeautifulSoup('<h2>hi</h2>')
blank_object = BeautifulSoup()
soup2 = blank_object.__dict__.update(soup.__dict__)
print(soup2.__dict__)
  

'NoneType'对象没有属性' dict '

让我想知道