python__new__内置静态方法使用解析

yipeiwu_com7年前Python基础

这篇文章主要介绍了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)

输出:

需要返回 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设计】。

相关文章

selenium2.0中常用的python函数汇总

本文总结分析了selenium2.0中常用的python函数。分享给大家供大家参考,具体如下: 新建实例driver = webdriver.Firefox() 此处定位均使用的百度首...

Python实现给文件添加内容及得到文件信息的方法

本文实例讲述了Python实现给文件添加内容及得到文件信息的方法。分享给大家供大家参考。具体分析如下: 经常会遇到给文件添加内容的时候,如果只是添加在文件的末尾,就比较简单了: fi...

Python单体模式的几种常见实现方法详解

本文实例讲述了Python单体模式的几种常见实现方法。分享给大家供大家参考,具体如下: 这里python实现的单体模式,参考了:https://stackoverflow.com/que...

详解python中@的用法

python中@的用法 @是一个装饰器,针对函数,起调用传参的作用。 有修饰和被修饰的区别,‘@function'作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数...

selenium+python实现1688网站验证码图片的截取功能

selenium+python实现1688网站验证码图片的截取功能

1. 背景 •在1688网站爬取数据时,如果访问过于频繁,无论用户是否已经登录,就会弹出如下所示的验证码登录框。 一般的验证码是类似于如下的元素(通过链接单独加载进页面...