首页 > 其他分享 >抽象类

抽象类

时间:2024-01-05 19:35:42浏览次数:30  
标签:abc read self write 抽象类 def

在python中实现抽象类

  • 抽象类是一个介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计

(1)导入模块

import abc

(2)不重写抽象类方法

  • 其实就是在子类中不重写抽象类
import abc  # 利用abc模块实现抽象类


class All_file(metaclass=abc.ABCMeta):
    # 定义抽象方法,无需实现功能
    @abc.abstractmethod
    def read(self):
        '子类必须定义该功能'
        pass

    # 定义抽象方法,无需实现功能
    @abc.abstractmethod
    def write(self):
        '子类必须定义该功能'
        pass


class Txt(All_file):
    def read(self):
        ...

    def write(self):
        ...


t1 = Txt()

(3)重写抽象类方法

  • 其实就是在子类中重写抽象类
import abc


class All_File(metaclass=abc.ABCMeta):
    # 定义抽象方法,无需实现功能
    @abc.abstractmethod
    def read(self):
        print(f'读')

    # 定义抽象方法,无需实现功能
    @abc.abstractmethod
    def write(self):
        print(f'写')

# 子类继承抽象类,但是必须定义read和write方法
class Txt(All_File):
    def read(self):
        print('文本数据的读取方法')

    def write(self):
        print('文本数据的读取方法')


# 子类继承抽象类,但是必须定义read和write方法
class Sata(All_File):
    def read(self):
        print('硬盘数据的读取方法')

    def write(self):
        print('硬盘数据的读取方法')


# 子类继承抽象类,但是必须定义read和write方法
class Process(All_File):
    def read(self):
        print('进程数据的读取方法')

    def write(self):
        print('进程数据的读取方法')


test_file = Txt()

video_file = Sata()

process_file = Process()

# 这样大家都是被归一化了,也就是一切皆文件的思想
test_file.read()  # 文本数据的读取方法
video_file.write()  # 硬盘数据的读取方法
process_file.read()  # 进程数据的读取方法

标签:abc,read,self,write,抽象类,def
From: https://www.cnblogs.com/ssrheart/p/17947907

相关文章

  • python面向对象之派生、组合、抽象类、反射
    【派生】在子类派生的新方法中如何重用父类的功能?  【组合】(定义) (案例) (组合和继承的区别) 【抽象类】(定义) (案例) 实例化 (总结) 【反射】什么是反射 如何反射 实现反射机制的步骤 解决办法 ......
  • Java中的抽象类
    抽象类必须使用abstract关键声明,例如抽象类MyAbstractStudy:publicabstractclassMyAbstractStudy{}不能使用抽象类创建对象。抽象类中可以没有抽象方法。抽象方法必须为public或者protected,缺省情况下为public。抽象类的子类必须实现父类的抽象方法,如果没有则需要声明子类也为ab......
  • Unity引擎2D游戏开发,有限状态机&抽象类多态
    状态机与抽象类观察如下代码:publicclassAttackFinish:StateMachineBehaviour{//OnStateEnteriscalledwhenatransitionstartsandthestatemachinestartstoevaluatethisstateoverridepublicvoidOnStateEnter(Animatoranimator,AnimatorStateIn......
  • java中属性和变量的区别与final和抽象类
    属性和变量的区别变量必须要有初始值;属性可以没有初始值;变量的范围只在当前大括号内有效;属性是对象在哪里使用就在哪里有效;属性的作用范围要比变量的大一些属性和变量publicclassstudy01{ publicstaticvoidmain(String[]args){ //这是一个变量Stringnam......
  • 秦疆的Java课程笔记:74 面向对象 抽象类
    abstract修饰符可以用来修饰方法,也可以用来修饰类。如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。抽象方法,只有方法的......
  • 抽象类、抽象方法、接口
    一、抽象类抽象类不是必须具有抽象方法,但是抽象方法一定是抽象类。方法和类都需要加上abstract修饰符。如果一个方法为抽象方法,则子类必须重写方法,如果子类不重写父类抽象方法,则子类需要声明为抽象类。抽象类可以有非抽象方法,抽象方法需要实现。调用抽象类的抽象方法或者非抽......
  • Python面向对象之抽象类与抽象方法
    C++和Java中面向对象中有抽象类或接口的说法,在python中没有abstract或interface这样的内置关键字。但是abc模块(AbstractBaseClasses)实现了这些抽象类检查的功能,其中ABC是抽象基类。@abstractmethod表示这个方法是一个抽象方法,子类必须重写。关于抽象类与抽象方法的示例代码如下:......
  • java抽象类
    一、概述二、抽象类的特点  示例: 三、抽象类的成员特点 ......
  • Day15 抽象类与接口
    1.抽象类格式关键字:abstract1.1抽象类:abstractclass类名{}publicabstractclassClassName{inta;publicabstractvoidfun();}除非该继承的子类也是抽象类,否则继承了抽象类的所有类都要重写抽象类的抽象方法不能new一个java抽象类,有点像c++中的......
  • java抽象类和抽象方法
    ......