Python抽象类与接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kimidake/article/details/89789846

根据Java的说法,抽象类是以abstract为关键字声明的类,类内部既可以有抽象方法,也可以有一般方法。

抽象类是对某类具有相似特征的对象进行的抽取,提炼出共性而存在。(如:Cat类和Dog类可抽象出Animal类)

接口是对某一类行为的抽取,对此类行为提取出共性,由各个实现类负责具体方法。(如:Cat会跑,Dog会跑,可抽象出Run接口)

抽象类:内部方法可实现也可交由子类实现

接口:内部方法只能由实现类去实现


Python没有抽象类和接口之分,统一为抽象类,由abc模块实现此功能

抽象方法有两种实现方式:@classmethod或者@abc.abstractmethod,其余方法不推荐

# 抽象类

import abc

class Animal(metaclass=abc.ABCMeta):

    @classmethod
    def name(self,name):
        pass

class Cat(Animal):
    def name(self, name):
        print('我叫:' + name)


if __name__ == '__main__':
    Cat().name('huahua')

多继承:Java不支持多继承,为了弥补,只能以接口来间接实现多继承,Python直接支持多继承,

class Child(Super1,Super2,···)

猜你喜欢

转载自blog.csdn.net/Kimidake/article/details/89789846