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进行基础的函数式编程的教程
Mar 31 Python
Python采用Django开发自己的博客系统
Sep 29 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python之array赋值技巧分享
Nov 28 Python
最小二乘法及其python实现详解
Feb 24 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
Django基于客户端下载文件实现方法
Apr 21 Python
python使用opencv resize图像不进行插值的操作
Jul 05 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
jQuery 源码分析笔记
2011/05/25 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
php文件缓存类汇总
2014/11/21 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
python中类的属性和方法介绍
2018/11/27 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
Python @property使用方法解析
2019/09/17 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
《春雨》教学反思
2014/04/24 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
2014年技术工作总结范文
2014/11/20 职场文书