螺竹编程
发布于 2024-05-27 / 2 阅读
0

Python/面向对象:抽象类

在 Python 中,抽象类是一个不能被直接实例化的类,它只能作为其他类的基类来使用。抽象类通常用于定义一组接口或者规范,这些接口或规范在具体的子类中必须被实现。

Python 中的抽象类通常是通过抽象基类(Abstract Base Class,简称 ABC)来实现的。Python 提供了 abc 模块来定义和使用抽象基类。使用 abc 模块可以定义抽象类和抽象方法,并且强制实现这些抽象方法。这样就可以实现接口和多态性了。

下面是一个简单的例子,演示了如何使用抽象基类来定义抽象类:

import abc

class Shape(metaclass=abc.ABCMeta):
  
    @abc.abstractmethod
    def area(self):
        pass

class Rectangle(Shape):
  
    def __init__(self, width, height):
        self.width = width
        self.height = height
  
    def area(self):
        return self.width * self.height

class Circle(Shape):
  
    def __init__(self, radius):
        self.radius = radius
  
    def area(self):
        return 3.14 * self.radius ** 2

r = Rectangle(5, 6)
print(r.area())

c = Circle(3)
print(c.area())

在这个例子中,Shape 是一个抽象基类,它定义了一个抽象方法 areaRectangleCircle 继承了 Shape,并且分别实现了 area 方法。在实例化 RectangleCircle 的对象后,可以调用 area 方法来计算它们的面积。注意到 Shape 不能被直接实例化。