首页 > 解决方案 > 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)提前谢谢你:)

标签: pythonpython-3.xclass

解决方案


推荐阅读