5.5 用户定义的可调用类型
不仅 Python 函数是真正的对象,任何 Python 对象都可以表现得像函数。为此,只需实现实例方法 __call__。
import randomclass BingoCage: def __init__(self, items):self._items = list(items) ➊ random.shuffle(self._items) ➋def pick(self): ➌try: return self._items.pop()except IndexError:raise LookupError('pick from empty BingoCage') ➍def __call__(self): ➎return self.pick()
❶ __init__ 接受任何可迭代对象;在本地构建一个副本,防止列表参数的意外副作用。
❷ shuffle 定能完成工作,因为 self._items 是列表。
❸ 起主要作用的方法。
❹ 如果 self._items 为空,抛出异常,并设定错误消息。
❺ bingo.pick() 的快捷方式是 bingo()。
输出示例:
>>> bingo = BingoCage(range(3)) >>> bingo.pick() 1 >>> bingo() 0 >>> callable(bingo) True
转载于:https://www.cnblogs.com/wjw2018/p/10672361.html
5.5 用户定义的可调用类型相关推荐
- python定义匿名函数关键字_python语言的匿名函数、7种可调用对象以及用户定义的可调用类型...
匿名函数 在python表达式中,用来创建匿名函数的是lambda关键字. lambda函数在python语言中只能使用纯表达式,也就是说,在lambda函数体中不能使用while和try,当然也不能 ...
- udt java_Java DB中的Java用户定义类型(UDT)
udt java Java DB是基于Java编程语言和SQL的关系数据库管理系统. 这是Apache软件基金会的开源Derby项目的Oracle版本. Java SE 7 SDK中包含Java DB ...
- Java DB中的Java用户定义类型(UDT)
Java DB是基于Java编程语言和SQL的关系数据库管理系统. 这是Apache软件基金会的开源Derby项目的Oracle版本. Java SE 7 SDK中包含Java DB. 用户定义类型( ...
- c#.net SQL存储过程直接传表;用户定义表类型的表
方法一 DataSet dataset = new DataSet(); using (SqlConnection conn = new SqlConnection(SqlHelper.sqlconn ...
- boost::spirit模块实现演示自定义的、用户定义的类型如何作为标记值类型轻松地与词法分析器集成
boost::spirit模块实现演示自定义的.用户定义的类型如何作为标记值类型轻松地与词法分析器集成 实现功能 C++实现代码 实现功能 boost::spirit模块实现演示自定义的.用户定义的类 ...
- 具有用户定义类型的format的示例用法
具有用户定义类型的format的示例用法 实现功能 C++实现代码 实现功能 具有用户定义类型的format的示例用法 C++实现代码 #include "boost/format.hpp& ...
- vb连接mysql出现的问题_连接数据库问题用户定义类型未定义【vb6】
连接数据库问题用户定义类型未定义[vb6]0 Dim cnnImage As NewADODB.Connection Dim rsImage As New ADODB.Recordset Dim st ...
- Access FileDialog 用户定义类型未定义(User-defined type not defined)的解决方法
Access VBA里的FileDialog函数可以打开文件对话框.有的高版Access(2016及以上)会提示"用户定义类型未定义".解决方案是在VBA编辑器里选择" ...
- 使用脚本编写 Vim 编辑器,第 2 部分: 用户定义函数
用户定义函数 Haskell 或 Scheme 程序员会告诉您,函数对于任何严肃的编程语言来说都是最重要的特性.对于 C 或 Perl 程序员,他们也会告诉您完全相同的观点. 函数为严肃的程序员提供了 ...
最新文章
- Mysql分页order by数据错乱重复
- C# 算法系列一基本数据结构
- 批处理解决本地连接无法禁用问题
- python装饰器函数-python3 函数:函数装饰器
- 直播源码和短视频源码,相亲相爱的一家人
- 怎么查看python是多少位_python+位数
- 命令行中只用scala来运行一个spark应用
- Hook API (C++)
- Android 之自定义view实现水波纹效果
- Oracle优化笔记
- 最短路径——dj+floyd+spfa(hdu2544)
- matlab tf-idf,java 兑现tfidf
- linux sleeping进程多_一文掌握Linux实战技能系统管理篇
- Java-多线程第四篇线程池
- 安装Seay代码审计工具
- origin拟合曲线,并绘制曲线上某一点的切线
- Java-视频按秒截取帧
- 常用元器件使用方法12:单节锂电池充电管理芯片XT2055的使用方法
- 查询数据表中重复数据及重复次数
- 免费的DDoS防火墙有哪些
热门文章
- Sparse Modeling of Intrinsic Correspondences
- 第九章 OGRE中的整个流程
- FCN模型和loss实现(code)
- java表示学生信息的类Student,并输出相关信息
- python怎么引入thrift文件_python使用thrift教程的方法示例
- 零基础入门语义分割——Task1 赛题理解
- 一个运营专员该如何做好数据分析?
- RuntimeWarning: coroutine ‘ClientResponse.text‘ was never awaited self._context.run(self._callback)
- 动态规划之最长回文串
- Java Web开发之一:用好的技术设计来犒赏自己