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 实现文件的递归拷贝实现代码
Aug 02 Python
Python计算三角函数之asin()方法的使用
May 15 Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
对python3 urllib包与http包的使用详解
May 10 Python
python中ASCII码和字符的转换方法
Jul 09 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
python实现桌面壁纸切换功能
Jan 21 Python
Python中print和return的作用及区别解析
May 05 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
Python语言中的数据类型-序列
Feb 24 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
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
JS实现小米轮播图
2020/09/21 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
js实现抽奖功能
2020/11/24 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python中使用SAX解析xml实例
2014/11/21 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python实现购物车功能的方法分析
2017/11/10 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
基于Python的OCR实现示例
2020/04/03 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
介绍下WebSphere的安全性
2013/01/31 面试题
教师的实习鉴定
2013/12/15 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
工作求职自荐信
2014/06/13 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
商场收银员岗位职责
2015/04/07 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
Python基础之元类详解
2021/04/29 Python