zoukankan      html  css  js  c++  java
  • Python的魔法方法__new__与__init__介绍

    一、概述

    __new__负责创建类的实例对象,__init__负责对__new__创建的对象进行初始化,二者都由Python解释器自动调用。

    二、示例

    创建对象时,Python解释器会先调用__new__方法创建对象并返回,然后再调用__init__对创建好的对象进行初始化:

    class Test: pass
    
    test = Test()
        #解释器的工作过程
        #1.test = object.__new__(Test)
        #2.object.__init__(test) #因为Test没定义__init__方法,所以采用基类的方法,object是所有类的基类

    如果重写了__new__方法,就必须显式的调用基类的__new__方法创建对象返回,__new__是解释器实现的类方法:

    class Test:
        def __new__(cls, *args, **kwargs):
            self = super().__new__(cls, *args, **kwargs) #也可以直接写为object.__new__(cls, *args, **kwargs),object类是所有类的基类
            self.gender = ''
            return self
    
        def __init__(self, name, age=0):
            self.name = name
            self.age = age
    
    test = Test('meng', age=21)
        #解释器的工作过程
        #1.test = Test.__new__(Test, 'meng', age=21)
        #2.Test.__init__(test, 'meng', age=21)
    
    test.gender #->男
  • 相关阅读:
    ISBN号码
    计数问题
    小玉在游泳
    数字反转
    单调队列(学习笔记)
    LCA(学习笔记)
    emacs配置文件
    线段树(学习笔记)
    RMQ问题 ST算法(学习笔记)
    Lucas卢卡斯定理(学习笔记)
  • 原文地址:https://www.cnblogs.com/hanxiaomeng/p/12753617.html
Copyright © 2011-2022 走看看