_\_call\_\_
__call__
一、__call__
- 对象后面加括号时,触发执行。
- 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于\ __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
- 先执行父类的__call__,然后在执行自己的__init__方法
class Foo:
def __init__(self):
print('__init__触发了')
def __call__(self, *args, **kwargs):
print('__call__触发了')
obj = Foo() # 执行 __init__
obj() # 执行 __call__
__init__触发了
__call__
class Mymeta(type):
# def __call__(self, *args, **kwargs):
# print('进入__call__')
# return ty
def __call__(self, *args, **kwargs):
"""
因为__call返回的空对象,所以要自己生成对象,通过__new方式)
:param args:
:param kwargs:
:return:
"""
print("__call__")
# self ==> Person
# print(args)
# print(kwargs)
# return self(*args) # 出现递归
# 实例化产生一个Person类的对象,借助__new__来产生,需要把类传过去,才能产生对象
self.__new__(self)
# obj 是Person类的对象,只不过是空的,
obj = object.__new__(self) # (因为__call返回的空对象,所以要自己生成对象,通过__new方式)
# obj = self.__new__(self)
# 调用__init__方法完成初始化
# 类来调用__init__方法, 就是个普通函数,有几个参数就要传几个参数
# self.__init__(obj, *args, **kwargs)
# 对象来调用__init__方法,对象的绑定方法,会把自身传过去
obj.__init__(*args, **kwargs)
print(obj)
return obj
class Person(object, metaclass=Mymeta):
school = 'hnnu'
def __init__(self, name):
print('sd')
self.name = name
def score(self):
print("分数100")
def __call__(self, *args, **kwargs):
print('Person 进入__call__')
return 1
p = Person('randy')
p.name
__call__
1
person__init__
<__main__.Person object at 0x02CC4210>
_\_call\_\_的更多相关文章
- Spring_MVC_教程_快速入门_深入分析
Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...
- 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.
- 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异
Underscore.js是一个很精干的库,压缩后只有5.2KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程. 本文仅探讨Underscore.js的两个 ...
- CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站
CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ...
- 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线【图】_品牌资讯_服饰_太平洋时尚网
聚焦设计交易与商业落地 DANG·DHUB设计师平台上线[图]_品牌资讯_服饰_太平洋时尚网 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线
- 联系我们_你我想法_【有男度】UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站
联系我们_你我想法_[有男度]UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站 联系我们 2012-02-17 国内北京公司总部 邮编 ...
- Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!
Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松! 首页 / 关于 ...
- 北京西服定做_衬衫定制_关于我们_Dimoon TLR.
北京西服定做_衬衫定制_关于我们_Dimoon TLR.
- MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载
MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载 武侠类手机文字游戏,经典再现高度自由玩法宠物 自制装备 师徒自立门派 自造武功欢迎来玩 Q群 1 ...
- 轻奢请向历史SAY NO_重青网_重庆青年报_重庆青年报电子版_重庆青年报网站_重庆青年报官方网站
轻奢请向历史SAY NO_重青网_重庆青年报_重庆青年报电子版_重庆青年报网站_重庆青年报官方网站 轻奢请向历史SAY NO 经济学家George Taylor在他著名的"裙摆指数" ...
随机推荐
- [CISCN2019 华北赛区 Day1 Web5]CyberPunk
0x00 知识点 PHP伪协议直接读取源码 http://xxx.xxx/index.php?file=php://filter/convert.base64-encode/resource=inde ...
- 远程控制使用kill软件映射内网进行远程控制(9.28 第十四天)
1.能ping通IP情况下远程控制 设置kill软件中的端口.密码.上线列表 2.在软件的Bin\Plugins目录下找到Consys21.dll复制到/phpstudy/www目录下留作生成软件 3 ...
- 51nod 1201:整数划分 超级好的DP题目
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} { ...
- JS ~ 返回上一步
<a href=" javascript:window.history.back() "> 返回上一步 </a>
- h5-伸缩布局-小案例
1.伸缩布局案例1-基本页面布局 1.1.html <div class="layout"> <header></header> <mai ...
- Canvas绘制水波进度加载
效果: 用到图片下载: 自定义View: package com.czm.mysinkingview; import android.content.Context; import android.g ...
- 资源的合并与压缩-html压缩
资源的合并:减少http请求数量 资源的压缩:减少请求资源的大小 html压缩 html代码压缩就是压缩这些在文本文件中有意义,但是在html中不显示的字符,包括空格,制表符,换行符等,还有一些其他意 ...
- 浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。
浅谈ASCII .ISO8859-1.GB2312.GBK.Unicode.UTF-8 的区别. 首先,先科普一下什么是字符编码.字符是指一种语言中使用的基本实体,比如英文中的26个英文字母,标点符号 ...
- (简单模拟)P1540 机器翻译
题解: #include<iostream>#include<cmath>using namespace std; int main(){ int m,n; cin>&g ...
- 编写软件动态加载NT式驱动
NT式设备驱动程序的动态加载主要是由服务控制管理程序(Service Control Manager,即SCM)系统组件来完成的. Windwos服务可以在系统启动时加载,用户也可以按需在服务控制平台 ...