python 抽象类

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的抽象类为面向对象编程提供了强大的支持。它们不仅有助于定义类的接口和确保子类的一致性,还能防止无意义的实例化,并提供了一种实现多态性的有效方式。通过合理使用抽象类,我们可以构建更加灵活、可维护和可扩展的软件系统。

你可能感兴趣的:(python,开发语言)