看起来copy function和object().__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?
答案 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 '
让我想知道