码迷,mamicode.com
首页 > 其他好文 > 详细

抽象类

时间:2018-10-02 20:19:01      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:支持   abstract   read   div   没有   nbsp   rac   方法   数据   

# 抽象类
    # 一般情况下都是单继承 能实现的功能都是一样的
    # 抽象类也是一种规范,在python中实现起来与接口类类似
    # 多继承的情况 由于功能比较复杂,所以不容易抽象出相同的功能的具体实现写在父类中.而单继承实现的功能都是一样的,所以在父类中
    # 不管是抽象类还是接口类都是面向对象的开发规范
    # 在python中没有接口类(但是为了规范,所以弄了接口类),在java中,因为java中没有多继承,所以创建了一个接口类来实现多继承
    # python中支持抽象类,且可以在抽象类中实现python代码

# 为什么要有抽象类
    # 如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,抽取的内容包括数据属性和函数属性
    # 比如我们有香蕉的类、有苹果类、有桃子类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉、要么是吃一个具体的桃子,你永远无法吃到一个叫做水果的东西


from abc import abstractmethod, ABCMeta

# 抽象类,可以在类中实现部分代码(实际上,在python中接口类与抽象类实现是一样的(因为python中没有接口类,接口类是java弄的,java为了解决多继承而存在的),所以如果抽象类中可以实现部分代码,那么接口类其实也是可以实现部分代码的,但是因为接口类众所周知是不能实现方法的,所以我们默认不实现)
class All_file(metaclass=ABCMeta):
    @abstractmethod
    def read(self): # 子类必须实现read方法,否则实例化时报错
        print(haha)   # 可以实现部分代码

    @abstractmethod
    def write(self):# 子类必须实现read方法,否则实例化时报错
        pass

class Txt(All_file):
    def read(self): # 子类必须实现
        super().read()
        print(===)

    def write(self):
        print(++++)

t = Txt()
t.read()    # haha  ===

 

抽象类

标签:支持   abstract   read   div   没有   nbsp   rac   方法   数据   

原文地址:https://www.cnblogs.com/whylinux/p/9737459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!