记得之前learn python一书里面,因为当时没有官方支持,只能通过hack的方式实现抽象方法,具体如下 最简单的写法

class MyCls():

def foo(self):

print('method no implement')

运行的例子

>>> a = MyCls()

>>> a.foo()

method no implement

>>>

这样虽然可以用,但是提示不明显,还是容易误用,当然,还有更好的方法 较为可以接受的写法

class MyCls():

def foo(self):

raise Exception('no implement exception', 'foo method need implement')

一个简单的用例

>>> a = MyCls()

>>> a.foo()

Traceback (most recent call last):

File "", line 1, in File "", line 3, in foo

Exception: ('no implement exception', 'foo method need implement')

这就是2.7之前的写法了,2.7给了我们新的支持方法!abc模块(abstruct base class),这个在py3k中已经实现,算是back port吧。

我们来看看新的写法

from abc import ABCMeta

from abc import ABCMeta,abstractmethod

class Foo():

__metaclass__ = ABCMeta

@abstractmethod

def bar(self):

pass

运行效果

>>> class B(Foo):

... def bar(self):

... pass

...

>>> B()

>>> B().bar()

>>> class C(Foo):

... pass

...

>>> C().bar()

Traceback (most recent call last):

File "", line 1, in TypeError: Can't instantiate abstract class C with abstract methods bar

>>>

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

python3 class写法_Python抽象类的新写法相关推荐

  1. python编程购物车_python编写购物车新写法

    用另一种方式完成购物车的功能实现 #!/usr/bin/python zijin = input("请输入资金:") if zijin.isdigit(): zijin = int ...

  2. android 复杂的列表视图新写法MultiType

    从前,比如我们写一个类似微博列表页面,这样的列表是十分复杂的:有纯文本的.带转发原文的.带图片的.带视频的.带文章的等等,甚至穿插一条可以横向滑动的好友推荐条目.不同的 item 类型众多,而且随着业 ...

  3. vue2.x中slot-scope插槽在vue3.x中的新写法

    vue2.x中slot-scope插槽在vue3.x中的新写法 1.vue2.x的写法 <el-table-column label="测试" align="cen ...

  4. 当ViewModelProviders方法被弃用,使用ViewModelProvider获取ViewModel的新写法_莫韵乐与bug的奇妙冒险

    当ViewModelProviders方法被弃用,使用ViewModelProvider获取ViewModel的新写法 在androidx.lifecycle:lifecycle-extensions ...

  5. Python2寿命只剩一个月啦!还不快赶紧学起Python3酷炫到爆的新特性!

    作者: Lateautumn4lin  来源:云爬虫技术研究笔记 Python3.8已经发布了将近一个月了,距离Python3.0第一个版本发布也将超过10年了.相信很多人还是依旧在使用Python2 ...

  6. Restful API是什么?初探Restful API,传统接口写法与Restful API接口写法区别

    Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API: 目录 ...

  7. oracle的标准写法,oracle 表连接特有写法与标准写法

    oracle里表连接支持标准写法,但也有oracle特殊的写法,这两种写法在某些场景下会有差异,推荐使用标准写法,这里只是介绍表连接标准语法及了解oracle的特殊写法. 标准连接语法: select ...

  8. Vue.js父与子组件之间传参 父向子组件传参   例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为ht

    Vue.js父与子组件之间传参 父向子组件传参 例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为html对 ...

  9. .php中js写法,js函数常见的写法以及调用方法

    写在前面:本文详细的介绍了5中js函数常见的写法以及调用的方法,平时看别人代码的时候总是看到各种不同风格的js函数的写法.不明不白的,找了点资料,做了个总结,需要的小伙伴可以看看,做个参考. 1.常规 ...

最新文章

  1. Pytorch数据类型转换
  2. Python20行代码实现视频字符化
  3. 如何打印出 SAP Spartacus 调用 OCC API 消费的所有 endpoint
  4. 计算机网络【六】网络层协议
  5. 嵌入式linux中的锁机制,跟涛哥一起学嵌入式第11集:一个实现锁机制非常有意思的宏...
  6. Java开发笔记(八十六)通过缓冲区读写文件
  7. GitHub更新Fork代码
  8. 《Android开发艺术探索》读书笔记 (7) 第7章 Android动画深入分析
  9. 已知两点坐标和半径,求圆心
  10. QTreeWidget样式qss
  11. .强力卸载或者删除文件
  12. 概率收敛、分布收敛、Lp收敛
  13. 云计算技术与应用课后答案第一章
  14. 华为eNSP模拟器中两个路由器IP互联
  15. origin画图---学习时遇到的画图记录
  16. ubuntu如何查看当前的ROS发行版本
  17. Charles 常用基础功能使用方法
  18. 你还在纠结器件丝印放错的烦恼么?
  19. 【Cloudaily】蚂蚁金服与RISELab达成合作,Hadoop成新一波数据库攻击目标
  20. 2020 年天津理工大学研究生招生考试 数据结构部分

热门文章

  1. Google Android EDLA协议及AER认证
  2. JavaSwing多线程小游戏雷霆战机
  3. Java 收货地址智能解析
  4. twitter账号被冻结如何申诉,已成功解冻(我是第一次被冻结,听闻二次冻结会永久冻结)
  5. 计算机游戏模式怎么开144hz,刚开始换成了144hz现在为何最高只有60hz了求大神解答...
  6. HMI-42-【节能模式】实现油量表和水温表
  7. 为什么short_open_tag设置成On仍无效
  8. 用python编写西门子plc程序_snap7读写西门子plc1200步骤(python)
  9. 当代世界顶级彩铅牛人的画作,每一副仿佛照片一样逼真!
  10. java.io.FileNotFoundException: /storage/emulated/0/ ……: open failed: EACCES (Permissi