Python编程基础:第四十七节 抽象类Abstract Classes

第四十七节 抽象类Abstract Classes

前言

抽象类可以这么理解,它就是一个模板,里面声明了子类必须定义的函数,但是对于每个函数都没有给出具体实现。所有函数的实现都是在子类中定义。我们这里给出抽象类的定义方式:

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),敬请期待~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值