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(一)Python环境安装
Aug 20 Python
Python 的 Socket 编程
Mar 24 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
django文档学习之applications使用详解
Jan 29 Python
python高阶爬虫实战分析
Jul 29 Python
Python数据类型之Tuple元组实例详解
May 08 Python
代码实例讲解python3的编码问题
Jul 08 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
python列表的逆序遍历实现
Apr 20 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 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
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
PHP输出日历表代码实例
2015/03/27 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP7新功能总结
2019/04/14 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
Python实现Linux的find命令实例分享
2017/06/04 Python
python读取和保存视频文件
2018/04/16 Python
pandas中的series数据类型详解
2019/07/06 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
大专生简历的自我评价
2013/11/26 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
求职自荐信怎么写
2015/03/04 职场文书
奖金申请报告模板
2015/05/15 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
导游词之四川武侯祠
2019/10/21 职场文书