前言
抽象类可以这么理解,它就是一个模板,里面声明了子类必须定义的函数,但是对于每个函数都没有给出具体实现。所有函数的实现都是在子类中定义。我们这里给出抽象类的定义方式:
from abc import ABC, abstractmethod
class 类名称(ABC):
@abstractmethod
def 方法名称(self):
pass
实践
我们先定义一个People
抽象类:
from abc import ABC, abstractmethod
class People(ABC):
@abstractmethod
def gender(self):
pass
可见,People
类是ABC
类的子类,ABC是Abstract Classes的简写,通过以上定义就可以声明People
类是抽象类。如果我们要指定某个函数是People
类的所有子类均需要定义的,我们就在这个函数上方添加@abstractmethod
。通过这样定义,如果子类中没有该函数的具体实现过程程序就会报错。
然后我们创建子类Woman
继承于父类People
:
class Woman(People):
def gender(self):
print("This is a woman")
可见,子类Woman
中给出了gender
方法的具体实现过程。我们接下来对子类实例化:
woman = Woman()
woman.gender()
>>> This is a woman
当然,我们在重写抽象类中声明的函数时也可以传参:
class Man(People):
def __init__(self, height):
self.height = height
def gender(self, country):
print("This is a {} man".format(country))
def description(self):
print("This man is {}cm".format(self.height))
我们定义子类Man
继承于父类People
,并对gender
函数进行实现,不同的是这里的gender
函数需要外部传参。我们给出该类的实例化过程:
man = Man(height=170.2)
man.gender(country="Chinese")
man.description()
>>> This is a Chinese man
>>> This man is 170.2cm
以上便是抽象类的全部内容,感谢大家的收藏、点赞、评论。我们下一节将介绍对象作为参数(Objects as Arguments),敬请期待~