广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python__init__与__new__的区别
  • 681
分享到

python__init__与__new__的区别

python__init__与__new__python__init__python__new__ 2023-02-24 17:02:57 681人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

一、构造函数 __init__ 与__new__ __new__   作用: 创建对象,并分配内存 __init__ 作用: 初始化对象的值 注意: 1、与java相比,j

一、构造函数 __init__ 与__new__

__new__   作用: 创建对象,并分配内存

__init__ 作用: 初始化对象的值

注意:

1、与java相比,java只有一个构造器。而python  __new__  方法与 __init__ 方法 组合,才能称为一个对应类似于java中的构造器 

2、先执行__new__ ,创建对象,并分配内存.

再执行 __init__,初始化对象的值。

3、任何类都继承于object 类。

我们一般不重写__new__ 方法。 我们不重写,就默认调用父类 的 __new__ 方法。

4、__new__ 方法 ,一定要return 一个对象。 如果自己重写__new__ 方法,但是没有return出一个对象。连对象都没创建成功,后面是不会进行初始化对象的。

例子1:

class Person(object):
    def __init__(self,name,id,sex):
        self.name = name
        self.id = id
        self.sex = sex
        print("初始化对象的值")
 
    def __new__(cls, *args, **kwargs):
        print("开始创建对象,并分配内存")
 
if __name__ == '__main__':
    p = Person("张三",12,"男")

运行结果,只执行了__new__ 方法,并没有执行 __init__方法。

为啥呢? 因为new函数,没有返回一个 对象。

正确的用法

class Person(object):
    def __init__(self,name,id,sex):
        self.name = name
        self.id = id
        self.sex = sex
        print("初始化对象的值")
 
    def __new__(cls, *args, **kwargs):
        print("开始创建对象,并分配内存")
        self = super().__new__(cls)
        return self
 
if __name__ == '__main__':
    p = Person("张三",12,"男")

打印结果:

开始创建对象,并分配内存
初始化对象的值

到此这篇关于Python __init__与 __new__的区别的文章就介绍到这了,更多相关python __init__与 __new__内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python__init__与__new__的区别

本文链接: https://www.lsjlt.com/news/197475.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python__init__与__new__的区别
    一、构造函数 __init__ 与__new__ __new__   作用: 创建对象,并分配内存 __init__ 作用: 初始化对象的值 注意: 1、与java相比,j...
    99+
    2023-02-24
    python __init__与 __new__ python __init__ python __new__
  • python __init__与 __new__的区别是什么
    这篇“python __init__与 __new__的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
    99+
    2023-07-05
  • Python中__new__和__init__的区别与联系
    __new__ 和 __init__ 的区别主要表现在: __new__ 负责对象的创建而 __init__ 负责对象的初始化。 __new__:创建对象时调用,会返回当前对象的一...
    99+
    2022-11-12
  • Python的__Init__ 和__New__有什么区别
    这篇文章主要讲解了“Python的__Init__ 和__New__有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的__Init__ 和__New__有什么区别”吧!简...
    99+
    2023-07-06
  • Python中class内置方法__init__与__new__作用与区别解析
    目录背景__init__方法作用__new__方法作用__init__ && __new__联系使用__new__的场景定义、继承immutable class使用m...
    99+
    2022-11-11
  • python中__init__ 和__new__有什么区别
    python中__init__ 和__new__有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1....
    99+
    2023-06-15
  • jsp与js与jquery的区别
    jsp与js与jquery的区别:1、js是javascript文件的文件后缀。2、jquery 是一个函数库,是基于javascript的。3、jsp是jsp网页文件的后缀。js是javascript文件的文件后缀,其实就像文本文档a.t...
    99+
    2022-10-25
  • MySQL @与@@区别
    MySQL @与@@区别1、@xxx 是 用户自定义的变量  (User variables are written as @var_name)2、@@x xxx是 global或session变量  (@...
    99+
    2022-10-18
  • shtml与html的区别
    SHTML(Server Side HTML)与HTML(Hypertext Markup Language)的区别主要在于它们的处...
    99+
    2023-09-09
    shtml
  • dns与dhcp的区别
    1、功能不同 DNS(域名系统):DNS的主要功能是进行域名解析,将用户输入的易于理解的域名转换为计算机能够识别的IP地址。 DHCP(动态主机配置协议):DHCP的主要功能是自动为网络中的设备分配IP地址。 2、工作方式...
    99+
    2023-10-29
    区别 dns dhcp
  • leaflet与vue2leaflet的区别
    一、作用不同 leaflet是一个开源的JavaScript库,用于在网页上创建交互式的地图。它提供了一系列的地图组件,如图层、标记、弹出窗口、控件等,可以让开发者轻松地定制和扩展地图功能。leaflet支持多种地图源,如OpenStree...
    99+
    2023-10-29
    区别 leaflet vue2leaflet
  • jdk与jre的区别
    对于java初学者来说,往往不懂区分jdk和jre的区别,实际上这两个东西差别很大的,有必要了解一下:简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit ...
    99+
    2023-06-03
  • Token与session的区别
    一、什么是token? 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系 统使用。 Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成 一个Toke n便将此T...
    99+
    2023-09-22
    服务器 运维 spring mvc
  • ext2与ext3的区别
    inux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件...
    99+
    2023-01-31
    区别
  • java中“/”与“%”的区别
    区别:%是求模运算符,/是除运算符。%是求余运算,/是普通的除号。实例:System.out.println(3/5) = 0; System.out.println(2/5) = 0; System.out.println(4/5) ...
    99+
    2020-06-30
    java入门 java / % 区别
  • java与js的区别
    虽然JavaScript与Java有紧密的联系,但却是两个公司开发的不同的两个产品。Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet 应用程序开发;而JavaScript是Netscape公司的产品,其目的...
    99+
    2019-12-14
    java入门 java js 区别
  • OLAP与OLTP的区别
    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLT...
    99+
    2022-10-18
  • getReadableDatabase与getWritableDatabase的区别
        在Android中,通过getReadableDatabase与getWritableDatabase()都可以获得一个可以对数据库进行操作的实例。然后都可以对数据库进行增、删、...
    99+
    2022-10-18
  • undo与redo的区别
    undo:撤销,也就是取消之前的操作。 redo:重做,重新执行一遍之前的操作。什么是REDO  REDO记录transaction logs,分为online和archived。以恢复为目的。 ...
    99+
    2022-10-18
  • SQL与NoSQL的区别
    本篇内容主要讲解“SQL与NoSQL的区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL与NoSQL的区别”吧!一、专家简介VoltDB公司首席技术官Ry...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作