python魔方方法__call__

目录

  • python魔方方法__call__
    • 一、简介
    • 二、详解
    • 三、代码
    • 四、Reference

一、简介

当一个类,实现了__call__方法,那么这个类的实例对象,便可以像调用函数一样来,利用调用运算符()进行调用,执行__call__方法中重写的内置逻辑。

二、详解

语法:

def __call__(self, *args):...return something

三、代码

import randomclass BingoCage(object):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 form empty BingoCage!')def __call__(self):return self.pick()bingo = BingoCage((1,2,3,4,5,6))
print(bingo.items)
print(bingo.pick())
bingo()
[2, 3, 1, 4, 5, 6]
6
5

我们定义了一个宾果类,并且定义了一个pick方法弹出这个类的最后一个元素,然后我们定义了__call__方法,使得可以直接用调用运算符来调用这个类的实例对象。

四、Reference

《FulentPython》

python魔方方法__call__相关推荐

  1. python魔方方法__getitem__、__setitem__和__len__

    python魔方方法__getitem__.setitem__和__len 目录 python魔方方法__getitem__.__setitem__和__len__ 一.简介 二.详解 三.代码 四. ...

  2. python魔方方法__add__、__mul__、__sub__、__truediv__

    python魔方方法__add__.__mul__.__sub__.__truediv__ 目录 python魔方方法`__add__.__mul__.__sub__.__truediv__` 一.简 ...

  3. Python —— 魔方方法

    在Python中 方法名为:XXX() 就是魔方方法 init() 初始化函数,用于完成默认的设置 new() 返回一个对象的实例,init() 无返回值 new()是一个类方法 del() 析构方法 ...

  4. Python魔方方法详解

    原文链接: https://fishc.com.cn/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter%3Dtype ...

  5. Python——魔方方法

    在Python中,所有以"__"双下划线包起来的方法,都统称为"Magic Method",中文称『魔术方法』,例如类的初始化方法 init ,Python中所 ...

  6. Python 魔方方法

    class Person:# 默认打印对象,显示类名+地址# 重写该方法,打印该方法的返回值def __str__(self):return '我叫{},今年{}岁'.format(self.name ...

  7. Python基础day08【面向对象(类、对象、属性)、魔方方法(init、str、del、repr)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]   目录 0.复习 1.类外部添加和获取对象属性 2.类内部操作属性 3.魔法方法 3.1.__i ...

  8. python之有关魔方方法的内容

    魔方方法: 在python的类中,以下划线开头,两个下划线结尾的方法,如常见的:init,str,__del__等,就被称为魔方方法,这些方法在类或对象进行特定的操作时会被自动调用,我们可以使用或重写 ...

  9. Python Day11 魔方方法

    Python种的魔方方法 Python种有许多魔方方法供我们使用 魔法方法被双下划线包围,例如__init__. 魔法方法的第一个参数应为cls(类方法) 或者self(实例方法). 下面介绍常见的魔 ...

最新文章

  1. 操作系统OS-分页、页表
  2. ASA对FTP的审查抓包测试
  3. 实用插件_精选 10 个非常实用的 VS Code 插件
  4. eyoucms 入门必备
  5. React Router入门指南
  6. linux mod_ssl源码安装,linux下不重新编译apache添加安装mod_ssl模块和错误的处理方法...
  7. centos下配置java环境变量
  8. ros开发增加clion常用模板及初始化配置(五)
  9. 【java学习之路】(java框架)005.mybatis框架整合及逆向工厂
  10. java完成项目需要哪些技术_java_web项目开发需要掌握哪些技术
  11. python源码剖析-笔记2
  12. GAN学习记录(四)——条件生成对抗网络CGAN
  13. 模拟停车场管理系统(栈和队列的应用)
  14. 笔记本计算机无法启动怎么解决,笔记本开机进不了系统,教您笔记本开机无法进入系统怎么办...
  15. 有卡却显示无服务器,为什么卡一直显示无服务
  16. 关于星巴克在故宫开店
  17. 午芯高科“电容式”MEMS高性能数字气压传感器WXP380
  18. ipad/iphone的浏览器,为啥可以播放优酷土豆等在线视频
  19. 如何让一个div跟随鼠标移动
  20. [系列] - go-gin-api 规划目录和参数验证(二)

热门文章

  1. MyBatis主键回填
  2. slam初学(一)——Kdevelop的安装及汉化
  3. 软件的「向前兼容」和「向后兼容」
  4. 惊闻ci框架要被开发者放弃了 目前正在找下家脱手
  5. 互联网晚报 | 10月17日 星期日 | 锤子论坛宣布下线;《长津湖》跻身中国影史票房前四;华为云专属月·行业深耕专项行动开启...
  6. RabbitMQ 网页端控制台开启方式
  7. 在RMD使用过程中,右侧不生成图片的问题
  8. Lua不同类型变量做比较时的问题
  9. 夯实C++基础学习笔记
  10. JavaScript单选框选择操作