当前位置:首页>python>小白学python第72天之完成作业

小白学python第72天之完成作业

  • 2026-08-22 17:14:37
小白学python第72天之完成作业

2.17

完成作业

?

学前疑问

我们今天不学习新的知识点,只处理前面几天学习面向对象留下的作业,大家若是对作业解答有不同见解,都可以留言交流。

第68天

作业:

请编写一个 Student类,要求实现以下三个魔术方法的功能:

① __init__:在创建对象时初始化学生的 name(姓名)和 age(年龄)。

② __str__:返回字符串格式的学生信息,例如:"学生姓名:张三,年龄:20"。

③ __del__:在对象被销毁时打印提示信息,例如:"张三对象已被删除"。

程序要求:

(1)创建两个 Student对象,打印它们的信息。

(2)手动删除其中一个对象,观察 __del__方法的触发时机。

(3)程序结束时,自动触发另一个对象的 __del__方法。

classStudent:    def __init__(self, name, age):        self.name = name        self.age = age        print(f"{self.name}对象被创建")    def __str__(self):        return f"学生姓名:{self.name},年龄:{self.age}"    def __del__(self):        print(f"{self.name}对象已被删除")# 创建对象stu1 = Student("张三", 20)stu2 = Student("李四", 18)# 打印对象信息(触发 __str__)print(stu1)print(stu2)# 手动删除 stu1(触发 __del__)del stu1print("程序即将结束,剩余对象将由解释器自动回收...")# 程序结束时,stu2 的 __del__ 会被自动触发

第70天

作业:

请编写一个 Student类,实现以下封装功能:

(1)私有属性:将学生的 __name(姓名)和 __score(成绩)设置为私有属性,防止在类外部被直接修改。

(2)公共接口:提供公共方法用于访问和修改这些属性:

① get_info(): 返回学生的信息字符串,格式为:"学生姓名:{name},成绩:{score}"。

② set_score(new_score): 设置学生成绩。在方法内进行数据验证,确保新成绩必须在 0到 100之间。如果成绩无效,则打印提示信息并不修改成绩。

(3)构造方法:使用 __init__方法初始化学生的姓名和成绩。

classStudent:def init(self, name, score):# 使用双下划线将属性设置为私有,这是封装的第一步self.__name = nameself.set_score(score)  # 通过自己的set_score方法设置初始成绩,自动进行验证# 公共方法:用于安全地修改成绩(包含数据验证)def set_score(self, new_score):    if 0 <= new_score <= 100:        self.__score = new_score        print(f"成绩已更新为:{new_score}")    else:        print(f"错误:成绩 {new_score} 无效,必须在0-100之间。成绩未更新。")# 公共方法:用于获取学生信息(提供受控的访问方式)def get_info(self):    return f"学生姓名:{self.__name},成绩:{self.__score}"测试代码if name == "main":# 创建一个Student对象stu = Student("张三", 85)# 1. 正确获取信息print(stu.get_info())# 2. 尝试设置一个有效成绩stu.set_score(92)print(stu.get_info())# 3. 尝试设置一个无效成绩(验证封装的保护作用)stu.set_score(150)print(stu.get_info())# 4. 尝试直接访问私有属性(会失败,证明封装生效)# print(stu.__name)   # 取消注释运行会报错:AttributeError# stu.__score = 200  # 这行代码不会报错,但实际上是给对象动态添加了一个新属性 __score,并不会修改真正的私有属性 __score# print(stu.get_info()) # 再次获取信息,会发现成绩依然是92,证明内部的 __score 未被修改

第71天

作业:

今日学习完毕,课后作业: 

动物声音模拟器,题目要求:

① 创建一个基类 Animal(动物)。

② 创建一个子类 Dog(狗),它继承自 Animal类。

③ 在 Animal类中定义一个 speak()方法,该方法打印:"动物发出声音..."。

④ 在 Dog类中重写 speak()方法,使其打印:"汪汪汪!"。

⑤ 在 main函数中,分别创建 Animal和 Dog的对象,并调用它们的 speak()方法,观察运行结果。

# 1. 定义基类(父类)AnimalclassAnimal:    def speak(self):        print("动物发出声音...")# 2. 定义子类 Dog,继承自 Animalclass Dog(Animal):    # 重写(Override)父类的 speak 方法    def speak(self):        print("汪汪汪!")# 测试代码if __name__ == "__main__":    # 创建基类 Animal 的对象    generic_animal = Animal()    generic_animal.speak()     # 创建子类 Dog 的对象    my_dog = Dog()    my_dog.speak() 

今日学习完毕,课后作业:  

有空的小伙伴,可以参考代码运行,还是建议不看着代码自己手打,学习效率更好。明天继续学习新的python知识点。

最新文章

随机文章