使得 Course 类可复制)重写程序清单 10-6(参见教材Ps10)中的 Course 类,增加一个clone 方法,执行 students 域上的深度复制。
时间: 2023-06-17 13:02:37 浏览: 315
PS10SetupV10.34.8768.rar
下面是重写后的 Course 类代码:
```python
class Course:
def __init__(self, name, students=None):
self.name = name
self.students = students if students is not None else []
def add_student(self, student):
self.students.append(student)
def clone(self):
import copy
return Course(self.name, copy.deepcopy(self.students))
```
在这个新的 Course 类中,我们添加了一个 `clone` 方法。这个方法利用 Python 的 `copy.deepcopy` 函数,对 `students` 域进行深度复制,创建一个新的 Course 对象并返回。
这样,我们就可以使用 `clone` 方法来创建一个全新的 Course 对象,其中 `name` 属性与原始对象相同,但是 `students` 属性是一个全新的列表,其中包含与原始对象不同的独立副本。这使得我们可以安全地对新对象的 `students` 列表进行修改,而不会影响原始对象。
阅读全文