学习进度条
每日总结
今日学习情况
- 学习时间:1小时
- 代码量:约100行
- 博客量:1篇
学到的知识点
-
Python类的定义与继承
- 学习了如何定义基类(如
People)和派生类(如Student、Teacher),通过super()调用父类方法实现代码复用。 - 示例:
class People: def __init__(self, name, gender, age): self.name = name self.gender = gender self.age = age class Student(People): def __init__(self, name, gender, age, student_id): super().__init__(name, gender, age) self.student_id = student_id
- 学习了如何定义基类(如
-
多态与接口设计
- 通过接口(如
TeacherInterface)统一方法(如calculate_salary),实现不同职称教师类的多态行为。 - 示例:
class TeacherInterface: def calculate_salary(self): raise NotImplementedError class Professor(Teacher, TeacherInterface): def calculate_salary(self): return 5000 + 50 * self.teaching_hours
- 通过接口(如
-
多重继承与MRO
- 实践了多重继承(如
GradOnWork继承Graduate和Teacher),需注意初始化顺序和属性冲突。 - 示例:
class GradOnWork(Graduate, Teacher): def __init__(self, ...): People.__init__(self, ...) # 显式调用基类初始化
- 实践了多重继承(如
-
自定义异常处理
- 创建
Cexception类处理日期类(Date)中的非法输入(如月份超出范围)。 - 示例:
class Cexception(Exception): def __init__(self, message): self.message = message try: date = Date(2023, 13, 1) # 触发异常 except Cexception as e: print(e)
- 创建
-
运算符重载
- 在
Point类中重载__lt__、__eq__等运算符,实现基于距离的比较逻辑。 - 示例:
class Point: def __lt__(self, other): return self.distance_to_origin() < other.distance_to_origin()
- 在
代码功能解释
-
高校人员信息包
- 基类:
People定义姓名、性别、年龄等通用属性。 - 派生类:
Student添加学号、成绩;Teacher添加职务、部门;Graduate扩展研究方向;GradOnWork融合学生和教师属性。
- 基类:
-
三维图形体系
- 接口:
ThreeDShape定义周长、面积、体积的抽象方法。 - 派生类:
Circle计算圆周长/面积;Sphere、Cylinder、Cone分别实现表面积和体积公式。
- 接口:
-
教师工资计算
- 多态应用:
Professor、AssociateProfessor、Lecturer根据职称实现不同的工资计算逻辑。
- 多态应用:
-
日期类与异常处理
- 健壮性:
Date类验证年月日合法性,Cexception提示具体错误(如“月份必须在1-12之间”)。
- 健壮性:
-
平面点类
- 运算符重载:
Point类支持直接比较点到原点的距离(如p1 > p2)。
- 运算符重载:
技术示例
鸭子类型示例:
class Duck:
def quack(self):
print("Quack!")
class Person:
def quack(self):
print("I'm quacking!")
def make_quack(obj):
obj.quack() # 不关心类型,只要有quack方法
make_quack(Duck()) # 输出: Quack!
make_quack(Person()) # 输出: I'm quacking!
总结
今日实验涵盖了Python面向对象的核心概念,通过实际编码加深了对继承、多态、接口和异常处理的理解。后续需注意:
- 避免多重继承的复杂性,优先使用组合。
- 合理使用
@property和特殊方法(如__str__)提升代码可读性。

浙公网安备 33010602011771号