一、什么是抽象类
与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化
二、抽象类与普通类的不同
抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。
三、在python中利用abc模块实现抽象类,示例代码如下:
1 import abc
2
3
4 class Animal(metaclass=abc.ABCMeta):
5 @abc.abstractmethod
6 def run(self):
7 pass
8
9 @abc.abstractmethod
10 def eat(self):
11 pass
12
13
14 class People(Animal):
15 # def run(self):
16 # print('is running')
17 #
18 # def eat(self):
19 # print('is eating')
20 pass
21
22
23 class Pig(Animal):
24 def run(self):
25 print('is running')
26
27 def eat(self):
28 print('is eating')
29
30
31 class Dog(Animal):
32 def run(self):
33 print('is running')
34
35 def eat(self):
36 print('is eating')
37
38
39 peo1 = People()
40 pig1 = Pig()
41 dog1 = Dog()
42 peo1.eat()
43 pig1.eat()
44 dog1.eat()
45
46 结果为:
47 Traceback (most recent call last):
48 File "C:/Users/xudachen/PycharmProjects/Python全栈开发/第三模块/面向对象/14 抽象类.py", line 39, in <module>
49 peo1 = People()
50 TypeError: Can't instantiate abstract class People with abstract methods eat, run
报错原因为子类没有是实现抽象类功能,