Python 抽象类和抽象方法

Python 抽象类和抽象方法

Python 通过继承 abc 模块中的 ABC 来实现抽象类,通过 abc 模块的 abstractmethod 装饰抽象方法

示例

from enum import Enum
from abc import ABC, abstractmethod


class ShapeType(Enum):
    RECTANGLE = 1
    SQUARE = 2


class Shape(ABC):
    def __init__(self, t: ShapeType):
        self.type = t

    def get_area(self):
        raise NotImplementedError

    def __str__(self):
        return f"I'm a {self.type.name.lower()}, my area is {self.get_area()}"


class Rectangle(Shape):
    def __init__(self, width: int, height: int):
        super().__init__(ShapeType.RECTANGLE)
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height


class Square(Shape):
    def __init__(self, side_length: int):
        super().__init__(ShapeType.SQUARE)
        self.side_length = side_length

    def get_area(self):
        return self.side_length * self.side_length


def test_abstract_class():
    shapes = [Rectangle(2, 3), Square(5), Rectangle(3, 4)]
    for shape in shapes:
        print(f"{shape}")
posted @   软匠  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示