首页 > 编程语言 >Python中的抽象类解说

Python中的抽象类解说

时间:2023-05-05 20:45:06浏览次数:35  
标签:Python self sex job print 抽象类 def 解说

1、什么是抽象类?

如果说,类是对一堆对象共同内容的抽取,那么抽象类就是对一堆类共同内容的抽取,包括:属性和方法。

2、抽象类的特点

(1)抽象类必须包含一个或多个抽象方法,也可以包含普通方法。
(2)抽象类的抽象方法,在抽象类中并不作实现。
(3)抽象类不能被实例

(4)抽象类的子类要想进行实例化,必须先实现抽象父类中的所有抽象方法!!!!!!!!!!!!!

3、普通父类的示例

# coding:utf-8

# 不是抽象类,是一个普通父类
class Parent(object):
    # 构造方法
    def __init__(self, sex, surname, job):
        self.sex = sex
        self.surname = surname
        self.job = job

    # 已经实现的普通方法
    def run(self):
        print("running...")

    def say(self):
        print("saying...")

    def is_adult(self):
        print("True")

    # 未实现的普通方法
    def hobby(self):
        pass

# 子类
class Son(Parent):
    # 重写
    def is_adult(self):
        print("False")


# 实例化
s = Son(sex="male", surname="Zhang", job="student")
s.is_adult() # False
s.hobby()

 因此,parent是普通类,而不是抽象类,也没有继承顶级抽象父类ABC,所以parent类就是一个普通父类。parent类中有没有实现的方法,而son类继承它后也没有对其实现,但没关系,可以实例化!!!

4、抽象父类的示例

#coding:utf-8
# 从abc库中导入ABC, abstractmethod模块
from abc import ABC, abstractmethod

# 抽象父类
class Parent(ABC):
    # 构造方法
    def __init__(self, sex, surname, job):
        self.sex = sex
        self.surname = surname
        self.job = job

    # 已经实现的普通方法
    def run(self):
        print("running...")

    def say(self):
        print("saying...")

    def is_adult(self):
        print("True")

    # 抽象方法
    @abstractmethod
    def hobby(self):
        pass

# 子类
class Son(Parent):
    # 重写
    def is_adult(self):
        print("False")


# 实例化
s = Son(sex="male", surname="Zhang", job="student")
s.is_adult()
s.hobby() 

 报错是因为,子类son类中继承了抽象父辈parent,但父类中有一个抽象方法,而son类没有实现,那么实例化的时候就会报错!!!

5、正确打开方式!!!

#coding:utf-8
# 从abc库中导入ABC, abstractmethod模块
from abc import ABC, abstractmethod

# 抽象父类
class Parent(ABC):
    # 构造方法
    def __init__(self, sex, surname, job):
        self.sex = sex
        self.surname = surname
        self.job = job

    # 已经实现的普通方法
    def run(self):
        print("running...")

    def say(self):
        print("saying...")

    def is_adult(self):
        print("True")

    # 抽象方法
    @abstractmethod
    def hobby(self):
        pass

# 子类
class Son(Parent):
    # 重写
    def is_adult(self):
        print("False")
    # 实现抽象父类的抽象方法
    def hobby(self):
        print("basketball")


# 实例化
s = Son(sex="male", surname="Zhang", job="student")
s.is_adult() # False
s.hobby()   #  basketball


 

参考:https://blog.csdn.net/Elon15/article/details/127176217

 

标签:Python,self,sex,job,print,抽象类,def,解说
From: https://www.cnblogs.com/shaoyishi/p/17375314.html

相关文章

  • python异步爬虫
    异步爬虫基础知识阻塞​ 阻塞状态指程序未得到所需计算资源时被挂起的状态。程序在等待某个操作完成期间,自身无法继续干别的事情,则该程序在操作上是阻塞的。​ 常见的阻塞形式有:网络I/O阻塞、磁盘I/O阻塞、用户输入阻塞等。阻塞是无处不在的,包括在CPU切换上下文时,所有进程都......
  • python 串口读取gps
    #coding:utf-8#lastmodified:20220824importtimeimportserialimportre utctime=''lat=''ulat=''lon=''ulon=''numSv=''msl=''cogt=''cogm='&#......
  • Python 脚本部署和发布 Django 应用程序的示例代码及注释
    代码说明:1、在脚本中定义了要部署的Django应用程序名称、Docker镜像名称和标签。2、使用字符串模板定义了KubernetesDeployment和Service的YAML文件。在字符串模板中使用了变量,用于替换实际的值。3、将Deployment和Service的YAML文件保存到本地文件中,并使用kube......
  • python如何表格对齐, 表格输出对齐, 输出内容对齐
    #我们输出的要求是对齐,但是名字的长度不一样defdeal_data(var):foriinrange(12-len(var)):#为什么是12呢?必须保证里面单个长度不能大于12,具体多少可以看自己的每个单元格的数据,不超过就可以var+=""returnvarlist1=[["Jacky","79","1......
  • 一Python flask框架
    一:Pythonflask框架前言1.Python面向对象的高级编程语言,以其语法简单、免费开源、免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析、人工智能、web后端等应用场景上。2.Python目前主要流行的web框架:flask、Django、Tornado补充一下,我们......
  • Python简易学生管理系统
    Python简易学生管理系统Projectmain.pymanager.pystudent.pystudents_info.json1、学生文件student.py#学生类classStudent(object):#存放学生信息student_info={}#学生初始化方法def__init__(self,id,name,addr,tel):self.id=......
  • Python+Pandas批量合并大量excel文件
    requirments.txtet-xmlfile==1.1.0numpy==1.24.3openpyxl==3.1.2pandas==2.0.1python-dateutil==2.8.2pytz==2023.3six==1.16.0tzdata==2023.3main.pyimportosimportpandasaspddir_path=os.path.dirname(os.path.abspath(__file__))source_location=o......
  • Python实现遍历读取文件或文件夹
    参考:https://www.jb51.net/article/258341.htmos.walk本身已经是遍历读取,包含所有的子文件(夹)path=u'.'#文件路径defnewWalkFile2(file):#main_dir当前路径,sub_dir_list当前路径下的子文件夹是个数组,sub_file_list当前路径下具体文件formain_dir,sub_dir_l......
  • Python自动寻路算法
    一、题目描述在一个迷宫游戏里,有一些小怪物要去攻击主角,现在希望给这些小怪物加上聪明的AI,让他们可以自动绕过迷宫中的障碍物,寻找到主角所在。二、解题思路迷宫游戏里的场景通常都是由小方格组成。假设我们有一个7*5大小的迷宫,图中红色格子是终点,绿色格子是起点,蓝色格子是一堵墙......
  • Python教程:pandas读写txt文件——DataFrame和Series
    大家用pandas一般都是读写csv文件或者tsv文件,读写txt文件时一般就withopen了,其实pandas数据类型操作起来更加方便,还是建议全用pandas这一套。读txt文件代码如下,主要是设置正则表达式的分隔符(sep参数),和列名取消(header参数),以及不需要列索引(index_col)。1df=pd.read_csv("workl......