• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python抽象类的新写法

Python抽象类的新写法

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了python 抽象类,python3 抽象类,python 抽象方法,python 抽象,抽象类的写法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

class MyCls():
  def foo(self):
    print('method no implement')

运行的例子


>>> a = MyCls()
>>> a.foo()
method no implement
>>>
</div>

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

class MyCls():
  def foo(self):
    raise Exception('no implement exception', 'foo method need implement')
</div>

一个简单的用例

>>> a = MyCls()
>>> a.foo()
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
 File "<clipboard>", line 3, in foo
Exception: ('no implement exception', 'foo method need implement')
</div>

这就是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
</div>

运行效果

>>> class B(Foo):
... def bar(self):
... pass
... 
>>> B()
<__main__.B object at 0x02EE7B50>
>>> B().bar()
>>> class C(Foo):
... pass
... 
>>> C().bar()
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
TypeError: Can't instantiate abstract class C with abstract methods bar
>>> 
</div>


</div>

您可能想查找下面的文章:

  • 在Python中定义和使用抽象类的方法
  • Python抽象类的新写法
  • python继承和抽象类的实现方法

相关文章

  • 一个小示例告诉你Python语言的优雅之处
  • 在Django的模型和公用函数中使用惰性翻译对象
  • python通过floor函数舍弃小数位的方法
  • python脚本爬取字体文件的实现方法
  • Python selenium文件上传方法汇总
  • python中私有函数调用方法解密
  • 使用Python的Twisted框架编写简单的网络客户端
  • Python库urllib与urllib2主要区别分析
  • Python的collections模块中namedtuple结构使用示例
  • python端口扫描系统实现方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python读取环境变量的方法和自定义类分享
    • 详解Python中的__getitem__方法与slice对象的切片操作
    • Python中的二叉树查找算法模块使用指南
    • 使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
    • python静态方法实例
    • Python标准库os.path包、glob包使用实例
    • python计算文本文件行数的方法
    • Python库urllib与urllib2主要区别分析
    • python循环监控远程端口的方法
    • python dict.get()和dict['key']的区别详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有