python3 抽象类Abstract Classes
python3 抽象类Abstract Classes
抽象类可以这么理解,它就是一个模板,里面声明了子类必须定义的函数,但是对于每个函数都没有给出具体实现。所有函数的实现都是在子类中定义。我们这里给出抽象类的定义方式:
from abc import ABC, abstractmethod class 类名称(ABC): @abstractmethod def 方法名称(self): pass
我们先定义一个People抽象类:
from abc import ABC, abstractmethod class People(ABC): @abstractmethod def gender(self): pass
可见,People类是ABC类的子类,ABC是Abstract Classes的简写,通过以上定义就可以声明People类是抽象类。如果我们要指定某个函数是People类的所有子类均需要定义的,我们就在这个函数上方添加@abstractmethod。通过这样定义,如果子类中没有该函数的具体实现过程程序就会报错。
然后我们创建子类Woman继承于父类People:
class Woman(People): def gender(self): print("This is a woman")
可见,子类Woman中给出了gender方法的具体实现过程。我们接下来对子类实例化:
woman = Woman() woman.gender() >>> This is a woman
当然,我们在重写抽象类中声明的函数时也可以传参:
class Man(People): def __init__(self, height): self.height = height def gender(self, country): print("This is a {} man".format(country)) def description(self): print("This man is {}cm".format(self.height))
我们定义子类Man继承于父类People,并对gender函数进行实现,不同的是这里的gender函数需要外部传参。我们给出该类的实例化过程:
man = Man(height=170.2) man.gender(country="Chinese") man.description() >>> This is a Chinese man >>> This man is 170.2cm
https://learnku.com/docs/pymotw/abc-abstract-base-classes/3488
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY