_\_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在他著名的"裙摆指数" ...
随机推荐
- Mac修改用户名后程序配置和文件都找不到了?
小编今天手残,修改mac 的用户名,幸亏文件没丢失,要不然配置程序估计至少要花费周末的两天时间了.. 所幸的是,各种Google,终于找回了原用户名下的所有配置. 接下来,讲讲小编如何入坑又如何脱坑的 ...
- tx2系统备份与恢复
https://blog.csdn.net/ycy_dy/article/details/80493392 https://blog.csdn.net/piaopiaopiaopiaopiao/art ...
- vue插件汇总
浏览了一下,确实不错,另补充以下几个插件(欢迎大家将自己使用的插件留言给我,共同进步): vue-orgchart 可编辑,可导出 JSON 的树形组织图 的VUE组件 viewerjs 强大的图 ...
- C++编程学习(四)声明/枚举
一.typedef 声明 typedef 为一个已有的类型取一个新的名字 typedef int num;//feet是int的另一个名字num a;//a是int类型 二.枚举类型 enum col ...
- 一个简单完整的promiseDemo
想要完全理解代码,需要理解 this 和闭包的含义. Promise是什么 简单来说,Promise 主要就是为了解决异步回调的问题.用 Promise 来处理异步回调使得代码层次清晰,便于理解,且更 ...
- 【Tensorflow】(tf.Graph)和(tf.session)
图(tf.Graph):计算图,主要用于构建网络,本身不进行任何实际的计算. 会话(tf.session):会话,主要用于执行网络.所有关于神经网络的计算都在这里进行,它执行的依据是计算图或者计算图的 ...
- POJ 1651:Multiplication Puzzle 矩阵相乘式DP
Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7118 Accepted: ...
- 基于百度语音识别API的Python语音识别小程序
一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统 ...
- const成员函数返回*this
#include <iostream> using namespace std; class A{ public: A &set(char); const A &displ ...
- 监听配置问题,SID与Service_Name区别
监听配置问题,SID与Service_Name区别 1.数据库实例名SID 概念:数据库实例名用于和操作系统进行联系的标识,是数据库和操作系统之间的交互用的书数据库实例名.实例名也被写入参数文件中,该 ...