python3--__call__拦截调用
2024-09-08 03:05:41
__call__拦截调用
当实例调用时,使用__call__方法。不,这不是循环定义:如果定义了,Python就会为实例应用函数调用表达式运行__call__方法。这样可以让类实例的外观和用法类似于函数。
#!/usr/bin/env python
# -*- coding:utf-8 -*- class Prod:
def __init__(self, value):
self.value = value
def __call__(self, other):
return self.value * other x = Prod(2)
print(x(3))
print(x(4))
运行结果:
6
8
在这个例子中,__call__似乎没什么特别的意义。下面这个简单的方法也能提供类似功能。
#!/usr/bin/env python
# -*- coding:utf-8 -*- class Prod:
def __init__(self, value):
self.value = value
def comp(self, other):
return self.value * other x = Prod(3)
print(x.comp(3))
print(x.comp(4))
运行结果:
9
12
然而,当需要为函数的API偏写接口时,__call__就变得很有用:这可以编写遵循所需要的函数来调用接口对象,同时又能保留状态信息。事实上,这可能是除了__init__构造方法以及_str__和__repr_显示格式方法外,第三个最常用的运算符重载方法了。
最新文章
- Java NIO概述
- Sql Server系列:嵌套查询
- sql视图实例
- HPUX 大文件系统扩容
- 清空file input框
- ACM-进阶之路
- Ruby自学笔记(六)— 循环
- 使用 Oracle Sql plus的一点经验
- STL之stack
- 关闭chrome浏览器的developer tools
- webpack2使用ch5-多页面设置 内部js和引入js
- Linux定时器 timerfd使用
- C#与Oracle数据库
- MAC使用超级终端
- CDRAF之Service mesh
- #1479 : 三等分(树形DP)
- SecureCRT操作指令
- jRazor
- 性能测试二:jmeter参数化+聚合报告
- day10--协成\异步IO\缓存
热门文章
- 我的NopCommerce之旅(2): 系统环境及技术分析
- org.apache.axis2.AxisFault: Service class XXXXX must have public as access Modifier解决方案
- Json字符串转excel表格文件
- PHP小数处理常用函数
- X11/Xlib.h: No such file or directory
- 数学题 追及相遇—HDOJ1275 人傻需要多做题
- Asp.Net Core 进阶(一) —— 读取appsettings.json
- 常用的 Excel 函数
- tomcat假死现象 - 二
- shell脚本,锁机制