Python 面向对象编程 四 抽象
抽象
抽象是面向对象编程(OOP)的另一个强大特性。它主要涉及隐藏实现细节,只显示对象的基本或高级特征。一个现实世界的例子是汽车。作为驾驶员,我们可以使用它的主要特征,但不知道该特征如何工作的真正细节,以及提供这些特征还涉及哪些其他对象。
抽象是一个与封装和继承相关的概念,这就是为什么我们首先理解封装和继承,把这个话题保留到最后。将此作为单独主题的另一个原因是强调在Python中抽象类的使用。
Python 中的抽象类
抽象类就像其他类的蓝图,抽象类不能被用来创建实例。抽象类允许您创建一组由子类实现的抽象方法(空)。简单来说,包含一个或多个抽象方法的类称为抽象类。另一方面,抽象方法是只有声明但没有实现的方法。
抽象类中可能存在已经实现的方法,并且可以通过继承被子类(按原样)使用。抽象类的概念对于实现应用程序编程接口(API)等常见接口非常有用,也有助于在一个地方定义子类可以重用的公共代码库。
Python 的包 abc 里有一个名字是 Abstract Base Classes(ABC)的内建模块,我们可以使用它创建抽象类。abc 包里还有一个 AbstractMethod 模块,该模块使用装饰器声明抽象方法。下面是一个简单的例子,其中用到了 ABC 模块和 abstractmethod 装饰器:
from abc import ABC, abstractmethod
class 交通工具类(ABC):
def 打招呼(我):
print(f"来自抽象类的问候")
@abstractmethod
def 输出_自己(我):
pass
class 小汽车类(交通工具类):
def __init__(我, 颜色, 品牌):
我.颜色 = 颜色
我.品牌 = 品牌
"""小汽车类必须实现这个方法"""
def 输出_自己(我):
print(f"我是一只小汽车,依呀依呀哟,我的颜色是{我.颜色},我的品牌是{我.品牌}。")
if __name__ == "__main__":
#交通工具 = 交通工具类() # 不能创建抽象类的实例
小汽车 = 小汽车类("蓝色", "国威")
小汽车.输出_自己()
小汽车.打招呼()
在这个例子中,我们定义了一个抽象类交通工具类,并且用它做父类,定义了一个子类小汽车类。小汽车类 实现了 交通工具类的抽象方法输出_自已,这是必须的。
不能直接创建交通工具类的实例,因为它是抽象类。
<未完待续>
5047

被折叠的 条评论
为什么被折叠?



