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 相关文章推荐
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
python使用socket连接远程服务器的方法
Apr 29 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
Python使用正则实现计算字符串算式
Dec 29 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
使用Pycharm分段执行代码
Apr 15 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
Python容器类型公共方法总结
Aug 19 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 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新手用的Insert和Update语句构造类
2012/03/31 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
基于Python正确读取资源文件
2020/09/14 Python
澳大利亚百货公司:David Jones
2018/02/08 全球购物
《小松树和大松树》教学反思
2014/02/20 职场文书
项目投资合作意向书
2014/07/29 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js