为了账号安全,请及时绑定邮箱和手机立即绑定

python的抽象类与定义方法

标签:
Python

hello 各位小伙伴大家好, 今天想分享一个python如何定义抽象类的手记,众所周知,python是没有interface---接口这个概念的, 在其他的编程语言中,比如golang 如果希望一个函数被反复在不同场景调用,可以使用interface做关联管理,而我们的python其实也有相应的办法,那就是: 通过定义一个基础抽象类,使得继承他的类必须重写需要的函数。这一知识应该不属于python的基础中的,所以如果大家基础还没有打捞,可以移步这里:python2020全栈开发 先把基础打捞。

好,那让我们先说一下如何定义python的抽象类,让我们先提前给出代码(python3),然后解释:

https://img3.sycdn.imooc.com/5f164cd50001048605530186.jpg

我们来看上图: 通过python的内置模块 abc 倒入 abstractclassmethod 与 ABCMeta,其中前者是一个装饰器函数,后者为显示声明我当前的类为一个抽象类,所以我们在第二行看到了,在parent类的括弧中,定义类metaclass=ABCMeta) 就是生命我是一个抽象类,接下来去定义抽象类中的抽象函数,在每个函数上方添加抽象对应的装饰器,该函数可以没有任何逻辑,直接pass就好,因为他需要未来继承这个抽象类的类去重写他的业务逻辑。


好,现在抽象类已经定义好了,我们来实例化一下试试:

https://img1.sycdn.imooc.com/5f164d850001f00507980164.jpg

什么情况? 怎么不能实例化呢? 是的, 抽象类,或者说含有抽象函数的类是不能实例化的,必须要重写类函数才可以,所以我们在继承了抽象类后,如果不重写这些抽象函数,依然无法实例化,比如:

https://img3.sycdn.imooc.com/5f164dfc0001a3b507700268.jpg


所以我们必须重写抽象函数,才可以实例化,比如:

https://img4.sycdn.imooc.com/5f164e330001afbb03640142.jpg


好了,这样就完成了抽象类的定义以及抽象类的使用。 抽象类主要是定义一个函数规则,我们去重复实现在各自的场景下,类似于 其他语言interface的效果。 如果有不准确的地方,也望指正,那么我们今天的分享就到这里。


··································

欢迎关注课程:

《Django入门到进阶-更适合Python小白的系统课程》

  金职位 Python工程师2020版


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消