第三阶段:继承与多态
第 7 周:综合运用继承与多态
周一:
周二:
周三:
周四:
周五:
总结
一、学习内容回顾
(一)多层次类结构设计与实现
(二)多态应用场景构建
二、问题与解决
(一)问题
(二)解决方法
三、学习成果
四、后续学习展望
name
(交通工具名称)、speed
(行驶速度),通用方法如 travel()
(行驶方法,但暂不具体定义行驶的细节,留给子类去重写实现具体行驶方式)。fuel_type
(燃油类型),自身特有的方法如 refuel()
(加油方法)。battery_capacity
(电池容量),自身特有的方法如 charge()
(充电方法)。class Transportation:
def __init__(self, name, speed):
self.name = name
self.speed = speed
def travel(self):
pass
class Car(Transportation):
def __init__(self, name, speed, fuel_type):
super().__init__(name, speed)
self.fuel_type = fuel_type
def travel(self):
print(f"{self.name} (a car) is traveling at {self.speed} km/h using {self.fuel_type} fuel.")
def refuel(self):
print(f"{self.name} is refueling with {self.fuel_type} fuel.")
class ElectricCar(Car):
def __init__(
self, name, speed, fuel_type, battery_capacity
):
super().__init__(name, speed, fuel_type)
self.battery_capacity = battery_capacity
def travel(self):
print(
f"{self.name} (an electric car) is traveling at {self.speed} km/h with a battery capacity of {self.battery_capacity} kWh."
)
def charge(self):
print(f"{self.name} is charging its battery with a capacity of {self.battery_capacity} kWh.")
car = Car("Toyota Corolla", 120, "Gasoline")
electricCar = ElectricCar("Tesla Model 3", 150, "Electric", 75)
car.travel()
car.refuel()
electricCar.travel()
electricCar.charge()
class TrafficManagement:
def manage_transportation(self, transportation):
if isinstance(transportation, Car):
transportation.record_mileage()
elif isinstance(transportation, ElectricCar):
transportation.check_battery_status()
record_mileage
和 check_battery_status
方法),然后创建 “交通管理” 类的实例对象并进行测试:car = Car("Toyota Corolla", 120, "Gasoline")
electricCar = ElectricCar("Tesla Model 3", 150, "Electric", 75)
management = TrafficManagement()
management.manage_transportation(car)
management.manage_transportation(electricCar)
name
(交通工具名称)和 speed
(行驶速度),以及抽象的 travel
方法,为子类提供统一的行驶行为规范框架。class Transportation:
def __init__(self, name, speed):
self.name = name
self.speed = speed
def travel(self):
pass
fuel_type
(燃油类型)属性以及 refuel
方法,用于体现汽车的燃油特性与加油操作,同时重写了 travel
方法以展示汽车基于燃油行驶的具体信息。class Car(Transportation):
def __init__(self, name, speed, fuel_type):
super().__init__(name, speed)
self.fuel_type = fuel_type
def travel(self):
print(f"{self.name} (a car) is traveling at {self.speed} km/h using {self.fuel_type} fuel.")
def refuel(self):
print(f"{self.name} is refueling with {self.fuel_type} fuel.")
battery_capacity
(电池容量)属性和 charge
方法,以描述电动汽车的电池特征与充电功能,并重写 travel
方法来展示电动汽车基于电池行驶的独特信息。class ElectricCar(Car):
def __init__(
self, name, speed, fuel_type, battery_capacity
):
super().__init__(name, speed, fuel_type)
self.battery_capacity = battery_capacity
def travel(self):
print(
f"{self.name} (an electric car) is traveling at {self.speed} km/h with a battery capacity of {self.battery_capacity} kWh."
)
def charge(self):
print(f"{self.name} is charging its battery with a capacity of {self.battery_capacity} kWh.")
manage_transportation
方法作为多态应用的核心。该方法接收不同类型的交通工具对象(如 “汽车”、“电动汽车” 等),并依据对象的实际类型调用相应的特定管理操作方法。通过 isinstance
函数进行类型判断,实现了对不同交通工具的差异化管理逻辑,充分展示了多态在处理复杂对象体系时的灵活性与适应性。class TrafficManagement:
def manage_transportation(self, transportation):
if isinstance(transportation, Car):
transportation.record_mileage()
elif isinstance(transportation, ElectricCar):
transportation.check_battery_status()
record_mileage
和 check_battery_status
等),让 “汽车” 类和 “电动汽车” 类分别继承自该抽象基类并实现相应的抽象方法。这样,“交通管理” 类的 manage_transportation
方法只需针对抽象基类进行操作,从而保证了对不同类型交通工具管理的统一接口规范,并且在新增交通工具类型时,只需让新类型继承自该抽象基类并实现相应抽象方法即可,极大地提高了代码的可扩展性。经过本周对继承与多态的综合运用学习与实践,成功构建了复杂且具有实际应用价值的类体系,深入理解了如何在多层次继承结构中合理组织代码,使各个类既能充分复用共性代码,又能灵活扩展自身特性。通过 “交通管理” 类的多态应用场景,切实体会到多态在处理多种类型对象时所带来的代码简洁性、可维护性和可扩展性的显著提升。在解决学习过程中遇到的问题时,不仅掌握了更高级的面向对象设计技巧(如抽象基类的运用),还进一步强化了对面向对象编程原则(如开闭原则、单一职责原则等)的理解与实践能力,使自己在 Python 面向对象编程领域的综合素养得到了质的飞跃。
在后续的学习中,计划深入研究 Python 面向对象编程中的设计模式,如工厂模式、单例模式、观察者模式等,探索如何运用这些成熟的设计模式来进一步优化代码结构,解决更复杂的实际编程问题。同时,将结合实际项目案例,不断锤炼自己在面向对象编程方面的技能,提高代码质量和开发效率,为成为一名优秀的 Python 开发者奠定更加坚实的基础。