这些可变任务的工作方式与我预期的一样:

>>> a = 3
>>> b = a
>>> print(a, b)
(3, 3)
>>> b=4
>>> print(a, b)
(3, 4)

然而,这些任务的表现有所不同:

>>> class number():
...     def __init__(self, name, number):
...         self.name = name
...         self.number = number
... 
>>> c = number("one", 1)
>>> d = c
>>> print(c.number, d.number)
(1, 1)
>>> d.number = 2
>>> print(c.number, d.number)
(2, 2)

为什么cd是一样的,不同于(a, b)的例子?我该怎么做(c, d)节课中的(a, b)节课?也就是说,复制对象,然后更改其中一部分(这不会影响我从中borrow 属性的对象)?

推荐答案

我没有看到有人提供详细信息,说明如何通过复制对象而不是仅仅为同一个对象指定新的引用,使这两个 case 的工作方式相同.

import copy
c = number("one", 1)
d = c
e = copy.copy(c)

print(c.number, d.number, e.number)
d.number = 2
e.number = 5
print(c.number, d.number, e.number)

这将给你:

1 1 1
2 2 5

Python-3.x相关问答推荐

使用Python装载. iso文件

将列表项的极列水平分解为新列

使用数据库将文件从Sharepoint下载到文件系统

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

如何将列表和字典逐行组合在一起

!date 的命令无法从 jupyter notebook 运行

使用 GEKKO 使用代码解决最佳时间控制问题时出现 IndexError

Python多进程:运行一个类的多个实例,将所有子进程保留在内存中

协议不支持地址系列在将 Scapy L3socket 与 WSL 一起使用时

Python 3 `str.__getitem__` 的计算复杂度是多少?

在不使用字符串方法的情况下查找字符串最后一个单词的长度 - Python

机器学习实验笔记本的工作区 url

如何在python中将列表转换为其他格式

从 Python2 到 Python3 的这种解包行为的变化是什么?

python 3.7 websockets的1006连接异常关闭错误

使用 python 正则表达式匹配日期

multiprocessing.Queue 中的 ctx 参数

try 在 Windows 10 高 DPI 显示器上解决模糊的 tkinter 文本 + zoom ,但担心我的方法不是 Pythonic 或不安全

如何在 Pandas 中的超 Big Data 框上创建数据透视表

什么是ANSI_X3.4-1968编码?