python - Python 类:复制对象(无需导入副本的深复制)
问题描述
我想构建一个创建具有不同内存地址的对象的完全独立副本(深拷贝)的方法。这样旧对象的值就不会受到新对象的值变化的影响。
我不想使用“导入副本”,而是想通过在类中定义一个新方法来手动完成。
比如说,我一直在构建一个名为“student”的新类并创建了一个对象“eden”
class student:
def __init__(self, name, year, number):
self.name = name
self.year = year
self.number = number
self.grades = []
def new_num(self, number):
self.number = number
def update_grades(self, grades):
self.grades.append(grades)
def create_copy(self): ### this is what I want to create
copy = student(self.name, self.year, self.number)
return copy
eden = student('eden', 2, 12345)
#update new grades of eden
eden.update_grades(100)
eden.update_grades(90)
eden.update_grades(80)
eden.update_grades(95)
new_eden = eden.create_copy() #created a new object, new_eden
new_eden.new_num(54321) #change a value
print(eden is new_eden) #False
print(eden.grades) #[100, 90, 80, 95]
print(new_eden.grades) #[]
尽管我似乎设法创建了具有不同 id 的对象的副本,但它表明一个实例变量 self.grade 尚未复制到新对象。我想知道如何复制与旧数据相同的所有数据。(在这种情况下,我错过了self.grades)提前谢谢你:)
解决方案
推荐阅读
- wso2-am - 如果使用 SSO 登录,角色将继续被覆盖
- excel - VBA使用MsgBox删除单元格?
- windows - 从“\Device\HarddiskVolume1\Progra~1”检索长路径
- python - tkinter 标签不初始化图像
- reactjs - React Native Linking:SMS 的状态
- javascript - 为 amcharts 中的特定部分添加背景颜色
- python - Python list.remove 未按预期工作
- c# - 什么是只执行一次的“foreach”循环的最佳替代品?
- javascript - Lambda 下载和转发 PDF(PDF 代理)
- python - 无法用所有列中的列值填充缺失值