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中的包和模块实例
Nov 22 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
Apr 01 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
python3+PyQt5泛型委托详解
Apr 24 Python
python中验证码连通域分割的方法详解
Jun 04 Python
pytorch 数据集图片显示方法
Jul 26 Python
python操作文件的参数整理
Jun 11 Python
详解Python3 pandas.merge用法
Sep 05 Python
Python中join()函数多种操作代码实例
Jan 13 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 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 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP类的反射用法实例
2014/11/03 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
JS实现多功能计算器
2020/10/28 Javascript
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
python学生信息管理系统实现代码
2019/12/17 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
幼儿园大班新学期寄语
2014/01/18 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
企业人事任命书
2014/06/05 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
追悼词范文大全
2015/06/23 职场文书
KTV员工管理制度
2015/08/06 职场文书
创业计划书之熟食店
2019/10/16 职场文书