今天我们一起来学习抽象类的使用,以及其作用。
首先,我们来看看到底什么是抽象类。
抽象类是一种特殊的类,生来就是作为父类的,具有抽象方法。那我们就来看一下代码,通过代码我们来学习抽象类的定义和使用。
import abc
class Foo(metaclass=abc.ABCMeta):
@abc.abstractmethod
def test(self):
pass
class Too(Foo):
def test(self):
print('test')
too = Too()
too.test()
foo = Foo()
test
TypeError: Can't instantiate abstract class Foo with abstract methods test
这里的Foo类就被称为抽象类,抽象类必须指定元类(metaclass)为abc模块的ABCMeta,抽象类中定义抽象方法,这里也需要加上装饰器。
通过程序运行结果可知,直接实例化Foo类会报错。
定义的抽象类不能直接实例化,抽象方法定义在抽象类中,子类必须要重写这个函数才可以使用。只所以会有抽象基类,这其实正是软件工程中一个很重要的概念,定义接口。我们想想,大型工程需要很多人一起合作开发,我们首先定义好抽象类,把需要的功能和事情定义好,做好接口,然后交给不同的程序员去开发即可。
今天的分享就到这了,我们下期再见~