我如何在Python中将对象设为空对象?

0 投票
1 回答
3331 浏览
提问于 2025-05-10 10:05

这可能是个傻问题,但我已经有一段时间没用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'

撰写回答