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利用MethodType绑定方法到类示例代码
Aug 27 Python
python-opencv颜色提取分割方法
Dec 08 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python创建学生成绩管理系统
Nov 22 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
解决python使用list()时总是报错的问题
May 05 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 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
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
js获取ip和地区
2017/03/10 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Django中的Signal代码详解
2018/02/05 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
英国团购网站:Groupon英国
2017/11/28 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
手机业务员岗位职责
2013/12/13 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android