zoukankan      html  css  js  c++  java
  • 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)

    输出:

  • 相关阅读:
    团队-科学计算器-成员简介及分工
    提交错误
    《结对-结对编项目作业名称-需求分析》
    对软件工程课程的期望
    自我介绍
    课堂作业0
    selenium+Java刷新浏览器
    不要焦虑~~
    JAVA代码实现得到指定文件夹下的文件名
    安全检测检查清单(IOS版APP)
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12144914.html
Copyright © 2011-2022 走看看