我如何在Python中将对象设为空对象?
这可能是个傻问题,但我已经有一段时间没用Python了……
所以,我有一组对象,比如:
p1 = Person("Name", "Age")
p2 = Person("Name", "Age")
..
我该怎么做,才能把一个对象复制一份,然后放到一个空的对象里呢?
相关文章:
- 暂无相关问题
1 个回答
1
“空”的对象其实并不存在,不过为了说明问题,我们可以说 empty 是 None
。
接下来,你可以“复制”这些对象,有两种不同的方法:
- 通过赋值语句,这样“复制”的对象 都指向同一个对象
- 通过
copy.deepcopy
,这样“复制”的对象是不同的(从id()
的角度来看),但它们的内容是相似的。
无论哪种方式,其实都不难。
对于第一种情况,我们用一个简单的赋值语句,假设有一个简单的类:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
还有它的两个实例:
p1 = Person("Name1", "Age1")
p2 = Person("Name2", "age2")
现在有一个新的“空”对象 p3 = None
,我们可以通过赋值运算符把另一个对象的引用复制给它:
p3 = p1 # p1 and p3 point to the same Person Instance
print(p3.name) # 'Name1'
print(p3 is p1) # True, same object
# Changes we make to a copy are visible to other copies.
p3.name = "Change name"
p1.name # 'Change name'
要制作一个对象的 copy
,也就是 在内容上完全相同,我们可以使用 copy.deepcopy
:
from copy import deepcopy
# copy contents of p3
p4 = copy.deepcopy(p3)
print(p4.name) # prints "Change name"
# changes now are insulated to p4.
p4.name = " Another name"
print(p3.name) # print 'Change name'