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 常用string函数详解
May 30 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
Python应用库大全总结
May 30 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
python urllib和urllib3知识点总结
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 url地址栏传中文乱码解决方法集合
2010/06/25 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python3 合并二叉树的实现
2019/09/30 Python
python打印异常信息的两种实现方式
2019/12/24 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
某公司C#程序员面试题笔试题
2014/05/26 面试题
门卫班长岗位职责
2013/12/15 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
一体化教学实施方案
2014/05/10 职场文书
机电系毕业生求职信
2014/07/11 职场文书
小学校长汇报材料
2014/08/20 职场文书
单位工作证明范文
2014/09/14 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
走进毛泽东观后感
2015/06/04 职场文书