1.基本概念
抽象类,顾名思义,是包含抽象方法(即没有具体实现的方法)的类。这些抽象方法必须在子类中得以具体实现。Python通过abc(Abstract Base Classes)模块提供了对抽象类的支持。
在Python 3中,我们通常会从abc.ABC类继承来创建一个抽象类,并使用@abc.abstractmethod装饰器来标记抽象方法。
2.定义抽象类
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass # 此处不实现具体功能,仅作为占位符
@abstractmethod
def perimeter(self):
pass # 同上
在这个例子中,Shape是一个抽象类,它定义了两个抽象方法:area和perimeter。这些方法在Shape类中并未实现,而是期待在子类中得以实现。
3.实现抽象类
子类必须实现抽象类中的所有抽象方法,否则它们自己也将被视为抽象类(即不能被实例化)。
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
import math
return math.pi * self.radius ** 2
def perimeter(self):
import math
return 2 * math.pi * self.radius
在这个例子中,Rectangle和Circle类都继承了Shape抽象类,并提供了area和perimeter方法的具体实现。
4.用途
定义接口:抽象类可以定义一组方法,要求子类必须实现这些方法。这有助于确保子类具有一致的接口。
提供通用功能:虽然抽象类不包含具体的方法实现,但它们可以包含通用的方法或属性,供子类继承和使用。
实现多态:通过抽象类,可以实现多态性,即允许用父类类型的引用来调用在子类中实现的方法。
防止实例化:由于抽象类包含未实现的方法,因此它们不能被实例化。这有助于防止创建没有意义的对象实例。
5.特点
抽象类不可以被实例化
如果一个类中有抽象方法(没有方法体),那么这个类必须定义为抽象类
子类必须重写父类的所有抽象方法,才能创建实例
6.总结
python的抽象类为面向对象编程提供了强大的支持。它们不仅有助于定义类的接口和确保子类的一致性,还能防止无意义的实例化,并提供了一种实现多态性的有效方式。通过合理使用抽象类,我们可以构建更加灵活、可维护和可扩展的软件系统。

5797

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



