首页 > 其他分享 >__new__(cls)方法详解

__new__(cls)方法详解

时间:2023-12-26 17:58:24浏览次数:27  
标签:__ name self print new id cls

只要是面向对象的编程语言,类的实例化一定包含两个步骤:
(1)在内存中创建对象,即开辟一块内存空间来存放类的实例化对象(Instance);
(2)初始化对象,即给实例的属性赋予初始值。

在 python 中,第一步由 __new__ 函数负责,第二步由 __init__ 函数负责。
__new__的返回值是__init__中的self

如果__new__方法返回None,则__init__方法不会被执行,并且创建空对象时只能调用父类中的__new__方法,而不能调用毫无关系的类的__new__方法

 

class Foo():
    def __new__(Foo, age,name):
        obj=super().__new__(Foo)
        print('obj 的id:',id(obj))
        print(obj.__dict__)
        return obj
    def __init__(self,age,name):
        print(self.__dict__)
        self.age=age
        self.name=name
        print(self.__dict__)
        print('self的id:',id(self))

f1=Foo(100,'yyy')
print('f1  的id:',id(f1))
print(f1.__dict__)

打印结果:

obj 的id: 2867407950352
{}
{}
{'age': 100, 'name': 'yyy'}
self的id: 2867407950352
f1 的id: 2867407950352
{'age': 100, 'name': 'yyy'}

 

标签:__,name,self,print,new,id,cls
From: https://www.cnblogs.com/yyyjw/p/17928942.html

相关文章

  • v-for v-if不建议一起用 解决办法 使用 computed
    <el-table-columnv-for="(item,index)innewDynamicColumns":key="index":prop="item.prop":label="item.label":align="item.align":width=&qu......
  • vs 使用 jsonschema
    使用jsonschema限制json配置文件内容vs配置文件中,添加\(schema,映射对应的json文件,此文件可以根据现有json文件通过工具生成基础的内容"\)schema":"http://127.0.0.1/webapibase.json",jsonschema文档https://json-schema.apifox.cn/工具https://hellosean1025.gith......
  • 小A的爸爸今年a岁,他比小A年长b岁,又比小A的奶奶年轻c岁请问小A和他的奶奶今年年龄多少?
    题目描述小A的爸爸今年a岁,他比小A年长b岁,又比小A的奶奶年轻c岁请问小A和他的奶奶今年年龄多少?输入格式第一行输入三个正整数a,b,c,以空格隔开代码描述:include<stdio.h>intmain(){inta;//小A的爸爸a岁intb;//小A的爸爸比小A大的岁数intc;//小A的爸爸比小A奶......
  • Windows事件日志
    本文主旨:了解Windows事件日志的相关信息,以便于后续进行Windows日志分析。事件日志简介事件日志记录[1]为(的应用程序和操作系统)记录重要软件和硬件事件提供了一种标准的集中式方法。事件日志记录服务记录来自各种源的事件,并将其存储在名为事件日志的单个集合中。事件日志......
  • 一、选题的背景
    一、选题的背景选取中国租房信息这一选题基于对日益增长的租房需求的关注。随着城市化进程和人口流动加速,租房市场成为社会焦点。我们希望通过对来自不同房产信息平台的数据进行深入分析,探索租房市场的现状和特征。从社会角度,我们关心租房市场的供需状况,以及租房者和房东之间的关......
  • CF1887C Minimum Array 题解
    Problem-1887C-CodeforcesMinimumArray-洛谷有点被降智了/ll首先区间修改显然先转化成差分序列单点修改。显然对于相同的操作序列,\(a_i\)的取值对答案无影响,因此我们可以先让\(a_i\)全部取\(0\),最后再加回来即可假如说操作到某一时刻,\(a_i\)的值中第一个......
  • 洛谷B3647 【模板】Floyd 题解 floyd算法 求 多源多汇最短路
    题目链接:https://www.luogu.com.cn/problem/B3647floyd算法:https://oi-wiki.org/graph/shortest-path/#floyd-算法示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=101;intn,m,f[maxn][maxn];intmain(){scanf("%d%d",&n......
  • vue3 elementplus 表格表头过长 三个点显示
    vue3:constrenderHeaderMethods=({column})=>{returncreateVNode(resolveComponent('el-tooltip'),{effect:'dark',content:column.label,placement:'top'......
  • kafka 自定义开发Sink Connector组件(兼容mysql和oracle)
    1.情景展示目前,市场上已有不少能从kafka消费数据的插件,如:io.confluent.connect.jdbc.JdbcSinkConnector,但这个组件有个致命的问题是,只能同步字符串类型。具体意思是:源库源表的日期类型字段,往目标库目标表插入数据的时候,只能是字符串类型,无法自动将其转成日期类型。这样一来的......
  • K8S发布策略,无损发布
    大家好,相信大部分公司都已经使用K8S进行容器管理和编排了,但是关于K8S的发布策略,还有很多同学不太清楚,通过这篇文章的介绍,相信大家对目前K8S的发布情况有一个概括的认识。总结下来,共有如下几种:重建(recreate):即停止一个原有的容器,然后进行容器的新建。滚动更新(rollingUpdate):停......