专业的JAVA编程教程与资源

网站首页 > java教程 正文

探秘Python抽象类_抽象类的代码

temp10 2025-09-06 12:16:52 java教程 7 ℃ 0 评论

在那篇探讨Python接口与“鸭类型”关系的文章中(Python中接口与鸭类型),我们详细介绍了Python中接口的实现方式--鸭类型。尽管“鸭类型”仅作为接口的一种实现策略,并不具备像Java等其他语言中的强制实现检查功能,且甚至需要借助hasattr函数来检验所需的方法是否存在,为此Python引入了abc模块以解决此类难题。该模块为构建抽象基类提供了有力支持。

抽象类主要用于制定规范,而非实际对象创建。它用于设定实现类(或子类)所需拥有的属性或方法,而自身并无实现责任。

探秘Python抽象类_抽象类的代码

抽象类详解

Python 中使用 abc 模块来实现抽象类的功能,其中模块中 ABC 作为抽象基类,抽象类需要继承该类。

abc.abstractmethod 用来定义抽象方法,表示子类必须要实现的方法。

使用propertyabc.abstractmethod 两个装饰器来定义抽象属性, 表示子类必须要实现定义的属性。

我们使用代码来解释:

from abc import ABC, abstractmethod

# ---------------------------------抽象类
# 定义抽象基类User
# 继承ABC
class User(ABC):

    # 定义属性
    @property
    @abstractmethod
    def age(self): pass

    # 定义初始化函数
    def __init__(self, name):
        self._name = name

    # 定义抽象方法
    @abstractmethod
    def print_name(self): pass

# --------------------------------实现类
# 定义继承抽象类的Manager
class Manager(User):

    # 必须设置属性
    @property
    def age(self):
        return 20

    # 定义初始化函数
    def __init__(self, name):
        super().__init__(name)

    # 必须实现的方法
    def print_name(self):
        print(f"我的名字叫: {self._name}")

# 实例化Manager
m = Manager("小明")
# 调用方法
m.print_name()

# 我的名字叫: 小明

在上述代码中, 我们定义了User 抽象类(继承自 ABC),并且定义了age 抽象属性和print_name 抽象方法,Manager 作为其实现类,分别实现了 age 属性和print_name 两个方法。

注意点

  1. 如果使用 pycharm 开发, 当一个类继承了一个抽象类,则会提示需要实现的方法, 只需要点击蓝色字,就可直接生成代码,非常方便(示例)。
  1. 继承了抽象类的子类, 如果没有或没有完全实现所有的方法,则继承的类依然是抽象类,且不能实例化

#文章首发挑战赛#

#挑战30天在头条写日记#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表