某在线教育网站的设计模式相关课程中,一位老师说Python不支持抽象类和接口。但实际上,Python是支持抽象类的。Python自带的abc模块用于实现抽象类相关的定义和操作。我们用一个简单的例子来说明如何在Python中实现一个抽象类:fromabcimportABC,abstractmethodclassPeople(ABC):@abstractmethoddefwalk(self):pass@abstractmethoddeat(self):passdefdance(self):print('Iamdancing')Import来自abc模块的ABC类,以及abstractmethod抽象方法装饰器。可以在ABC类的基础上实现一个抽象类。用@abstractmethod修饰方法,使其成为抽象方法。抽象方法必须在子类中实现。一个抽象类不能被实例化,所以我们实例化它,可以看到这里报错了,如下图:我们再来看一下,如果继承了一个抽象类,但是没有实现其中一个抽象类方法,它也会导致错误。如下图:当我们实现了所有的抽象方法后,子类就可以正常初始化了,如下图:抽象类中的dancePeople不是抽象方法,所以子类不需要重写.抽象类是软件开发中一个非常重要的概念。通过定义抽象类,我们可以约定子类必须实现的方法。当我们在一个类中有几十个或上百个方法时,使用抽象方法来防止子类缺少某些方法是非常方便的。
