


今天的基础篇内容讲解面向对象三大特性(3)-多态的基本知识,大家这么聪明,一看就会了,主要是介绍下多态的内容。

1. 多态:顾名思义,多种状态的表现。就是同一行为(方法),有不同的表现形式。
大白话例子:
(一) 共同方法:我们关注‘吃饭’这个行为(方法)
(二) 表现形式:人类用筷子、勺子等吃饭;猫狗用嘴直接啃食;鸟类用喙啄食
#--- 多态的示例 ---class Animal:def eat(self):passclass Dog(Animal):def eat(self):print("直接啃")class Human(Animal):def eat(self):print("筷、勺...辅助吃饭")class Bird(Animal):def eat(self):print("喙啄食")def eat(animal):animal.eat() # 将不同的实例传入,执行不同的方法dog = Dog()human = Human()bird = Bird()eat(dog) # '直接啃'eat(fish) # '筷、勺...辅助吃饭'eat(bird) # '喙啄食'

1.1 抽象基类与@abstractmethod装饰器:
抽象基类:自定义抽象基类必须继承abc.ABC,继承 ABC 后,该类就具备了抽象类的特性:该类不能实例化,强制子类实现抽象方法。若尝试将该类实例化,则会报错。
@abstractmethod装饰器:被装饰的方法是抽象方法,只有方法声明,没有具体实现;子类必须重写所有抽象方法,否则子类也无法实例化,这是专门预留给子类去实现的方法,子类必须去完成,否则无法实例化。
#--- 抽象基类与@abstractmethod装饰器 ---from abc import ABC, abstractmethod# 定义抽象基类(继承 ABC)class Shape(ABC):# 定义抽象方法(子类必须实现)@abstractmethoddef area(self):"""计算面积的抽象方法,子类必须实现"""pass # 抽象方法只有声明,没有实现,由子类实现# 子类(必须实现所有抽象方法)class Rectangle(Shape):def __init__(self, width, height):self.width = widthself.height = height# 实现抽象方法 areadef area(self):return self.width * self.height# 1.抽象基类不能实例化# shape = Shape() # 会抛出 TypeError: Can't instantiate abstract class Shape with abstract methods area, perimeter# 2.实例化子类rect = Rectangle(3, 4)print("矩形面积:", rect.area())



总结:今日我们学习了Python基础篇-面向对象的三大特性(3)-多态:多态是指同一个方法名称,在不同子类中可以有不同的实现,调用时只需使用统一的接口,就能自动执行对应对象的行为;认识了@abstractmethod装饰器的作用,其装饰的方法为抽象方法,这预留给子类的方法,且子类必须完成,否则子类无法实例化。多态让代码更加灵活、可扩展,新增子类时无需修改原有逻辑,极大提高了程序的可维护性,是面向对象编程中非常重要的思想。在Python基础篇,后续我们将持续学习Python基础知识,祝每一位study er学习愉快。




