Python 中的抽象类和接口类

【抽象类】

抽象类是一个特殊的类,只能被继承,不能被实例化。它主要用于作为其他类的基类或模板。

抽象类可以包含抽象方法和具体方法。在抽象类中定义的抽象方法必须在子类中进行实现。

from abc import abstractmethod, ABCMeta
class Fruit(metaclass=ABCMeta):
    @abstractmethod  # 带abstractmethod装饰器, 告诉子类必须实现该方法 
    def func_1(self):
        pass
    @abstractmethod  
    def func_2(self):  
        pass
    def func_3(self):  # 这是一个具体方法,它可以直接在抽象类中实现,也可以在子类中进行重写
        print('hell')

class Apple(Fruit): # 继承抽象类Fruit,并且需要实现它定义的抽象方法func_1,func_2
    def func_1(self):
        print('func_1')

    def func_2(self):
        print('func_2')

【接口】

接口类实际上就是一个规范子类的类。它定义了一个类应该实现的特定方法,本身不实现,由继承它的子类实现。

接口类同抽象类相似,也不能被实例化,都是通过abc模块定义,接口类不能定义具体方法。

【区别】

抽象类:

1.约束子类中必须包含某些方法,属于弱约束

2.抽象类中可以包含抽象方法,也可以有具体的方法

3.子类继承抽象类时,必须实现所有定义的抽象方法

4.一个子类只能继承一个抽象类

5.抽象类可以包含实例变量和类变量

6.抽象类适合用于构建类层次结构

接口类:

1.约束子类中必须包含父类规定的方法 ,属于强约束

2.接口中只能包含抽象方法,不能有具体的方法

3.可以通过多继承实现多个接口

4.接口不能有构造函数

5.接口不能包含变量

6.接口适合用于定义类应该实现的方法

 

posted @ 2024-03-24 22:00  潘_谈  阅读(137)  评论(0编辑  收藏  举报