python__new__内置静态方法使用解析


Posted in Python onJanuary 07, 2020

这篇文章主要介绍了python__new__内置静态方法使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

使用类名()创建对象时,python解释器会调用__new__方法来为对象分配空间。__new__是一个由object基类提供的内置静态方法,主要作用有两个:

(1)在内存中为对象分配空间

(2)返回对象的引用

python的解释器在获得对象的引用之后,将引用作为第一个参数,传递给__intit__方法。

重写__new__方法的代码非常固定:重写__new__方法一定要return super().__new__(cls),否则python解释器会得不到分配了空间的对象引用,就不会调用对象的初始化方法。

class MusicPlayer:
  def __new__(cls, *args, **kwargs):
    print("创建对象,分配空间")

  def __init__(self):
    print("播放器初始化")
player = MusicPlayer()
print(player)

输出:

python__new__内置静态方法使用解析

需要返回 return super().__new__(cls)

python所有类都有一个基类object,在object中默认的__new__方法已经封装了为对象分配空间的动作。

class MusicPlayer(object):
  def __new__(cls, *args, **kwargs):
    print("创建对象,分配空间")
    instance = super().__new__(cls)
    return instance

  def __init__(self):
    print("播放器初始化")
player = MusicPlayer()
print(player)

输出:

python__new__内置静态方法使用解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python判断windows隐藏文件的方法
Mar 21 Python
python常规方法实现数组的全排列
Mar 17 Python
详解python函数传参是传值还是传引用
Jan 16 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python实践项目之监控当前联网状态详情
May 23 Python
python 搜索大文件的实例代码
Jul 08 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
python实现四人制扑克牌游戏
Apr 22 Python
python给list排序的简单方法
Dec 10 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 #Python
python单例设计模式实现解析
Jan 07 #Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 #Python
linux环境下安装python虚拟环境及注意事项
Jan 07 #Python
Python包,__init__.py功能与用法分析
Jan 07 #Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 #Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 #Python
You might like
PHP中显示格式化的用户输入
2006/10/09 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
用实例分析Python中method的参数传递过程
2015/04/02 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
《Python学习手册》学习总结
2018/01/17 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
PHP经典面试题
2016/09/03 面试题
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
员工培训邀请函
2014/02/02 职场文书
合同协议书格式
2014/04/18 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2015年财务部工作总结
2015/04/10 职场文书
奔腾年代观后感
2015/06/09 职场文书
2019各种承诺书范文
2019/06/24 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL