python基础教程:__call__用法
__call__可以使得方法变成可被调用对象;(PS:python中的方法和普通函数有点区别:方法的第一个参数是类实例)
允许一个类的实例像函数一样被调用。实质上说,这意味着 x() 与 x.call() 是相同的。注意__call__参数可变。这意味着你可以定义__call__为其他你想要的函数,无论有多少个参数。
class Entity:
'''调用实体来改变实体的位置'''def _init_(self,size,x,y):self.x,self.y = x,yself.size = size
def _call_(self,x,y):'''改变实体的位置'''self.x, self.y = x,ye = Entity(1,2,3)#创建实例
e(4,5)#实例可以像函数那样执行,并传入x y值,修改对象的x y
实例对象也可以像函数一样作为可调用对象来用,那么,这个特点在什么场景用得上呢?
这个要结合类的特性来说,类可以记录数据(属性),而函数不行(闭包某种意义上也可行),利用这种特性可以实现基于类的装饰器,在类里面记录状态,比如,下面这个例子用于记录函数被调用的次数:
class Counter:def _init_(self,func):self.func = funcself.count = 0def _call_(self,*args,**kwargs):self.count += 1return self.func(*args,**kwargs)@Counter
def foo():pass
for i in range(10):foo()print(foo.count) #10
Python大型免费公开课,适合初学者入门
点击此处加群免费获取学习资料及必备软件。
首先这里的@Counter是装饰器,执行起来顺序是 foo = Counter(foo),实例化,把foo函数传到类Counter里面,并存到对象属性里面,然后返回foo = Counter实例。
这时foo已经是Counter实例,而不是本身foo函数。
PS:__call__这种用法在pytorch中也有所体现,pytorch中自定义的类继承于nn.Module父类,且该子类中对父类的forward方法进行了重载,且父类nn.Module中的__call__中调用了forward方法,所以我们直接用子类的实例作为可调用对象
python基础教程:__call__用法相关推荐
- Python基础教程,Python入门教程
Python 是一门上手简单.功能强大.通用型的脚本编程语言.Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发.软件开发.大数据分析.网络爬虫.机器学习等都不在话下. 这套 P ...
- python基础教程视频(全13集)-Python基础视频教程(600集)【传智播客精品教程】...
Python基础视频教程 初级共600节课 本套视频是传智播客紧抓未来最大趋势--人工智能,应运而生的一套Python入门视频教程,Python是学习人工智能的首选语言,而该视频是专门针对零基础的学员 ...
- python基础教程书-7本Python必读的入门书籍
Python入门书籍不用看太多,看一本就够.重要的是你要学习Python的哪个方向,或者说你对什么方向感兴趣,因为Python这门语言的应用领域比较广泛,比如说可以用来做数据分析.机器学习,也可以用来 ...
- python基础教程书籍-Python学习必看书籍_带你高效学习
坚持就是胜利,祝你成功!!! 都说python是最好的语言. 1.<笨办法学Python 3> 入门强烈推荐 本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴 ...
- python基础教程书籍-7本Python必读的入门书籍
Python入门书籍不用看太多,看一本就够.重要的是你要学习Python的哪个方向,或者说你对什么方向感兴趣,因为Python这门语言的应用领域比较广泛,比如说可以用来做数据分析.机器学习,也可以用来 ...
- python基础教程-Python入门教程完整版(懂中文就能学会)
提取码:sjfo 目录大纲: 本套教程15天 学前环境搭建 1-3 天内容为Linux基础命令 4-13 天内容为Python基础教程 14-15 天内容为 飞机大战项目演练 视频概括: 第一阶段(1 ...
- 《Python基础教程》学习笔记——异常
Python基础教程--异常 异常 异常是什么 让事情沿你指定的轨道出错 raise 语句 自定义的异常类 捕获异常 不用提供参数 多个 except 子句 一箭双雕 捕获对象 一网打尽 万事大吉时 ...
- 《Python基础教程(第3版)》笔记:第8章异常
<Python基础教程(第3版)>笔记:异常 重点 第8章 异常 异常对象未被处理(或捕获)时,程序将终止并显示一条错误信息:traceback 每个异常都是某个类的实例, 如何创建异常 ...
- Python基础教程:一次性搞定 Django Form
最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇Python基础教程也是做了一个简单的总结,大家可以对号出坑. Form 基础介绍 首先让我们先来了解下 D ...
- 莫烦Python[基础教程]
python基础教程一 安装 定义功能 函数参数 函数默认参数 可变参数 关键字参数 变量形式 模块安装 文件读取 文件读取1 文件读取2 文件读取3 Class类 input输入 元组.列表.字典 ...
最新文章
- 冠状病毒如何杀灭最高效?这里有一份几十年的实验汇总
- Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践
- django 中实现文件下载的3种方式
- 湖南计算机专业专科排名2015,湖南最好的公办专科大学有哪些排名揭秘?湖南十大专科学校推荐?...
- 大数据与Hadoop
- Hybrid Data Fusion (HDF)——数据融合
- timus 1260. Nudnik Photographer 动态规划
- 46 - 算法 -Leetcode-189-旋转数组-数据结构vector或者reverse函数
- 从外行到外包,从手工测试到知名互联大厂测开 我经历了我这个年龄段不该经历的事情...
- ISE_FIFO_IP核接口测试(一)
- JavaSE集合框架-01-集合框架体系及表数据结构
- 广东省东莞市谷歌卫星地图下载
- hadoop开发步骤
- 【2016年第1期】关于我国农业大数据中心建设的设想
- 植物大战僵尸Scratch
- 微信公众号菜单html5,微信公众号自定义菜单全攻略
- java 引入本地dtd,java解析xml文件读取本地dtd或者忽略dtd
- python里面and和or用法
- poi word表格系列操作
- python 四维数据怎么看性别_四维单子上有男女暗示 我告诉你四维彩超怎么分辨男女...
热门文章
- 5 python数据分析基础——批量进行数据分析(一)
- 数据字典的作用/用途:是数据流程图的补充!4个主要条目:数据项,数据处理(逻辑功能及其算法),数据存储,数据流条目
- 电脑进入BIOS系统的简单方法。
- NS3中路由协议分析【AODV代码分析】
- git基本命令的理解
- STM32F411核心板固件库开发(二) USART配置
- tlp导致linux运行缓慢,Ubuntu 18.04安装tlp实现电源管理,解决风扇狂转问题
- tlp导致linux运行缓慢,在deepin 20系统中使用tlp但无法自动降频的处理
- 335x系列平台-usb的模式切换HOST和OTG
- layui自定义验证表单