new_ 方法是什么?

__new__方法其实就是创建对象的方法

new()方法是在类准备将自身实例化时调用。

一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前,Python首先调用new()方法:

def new(cls, *args, **kwargs):

第一个参数cls是当前正在实例化的类。

如果要得到当前类的实例,应当在当前类中的new()方法语句中调用当前类的父类 的new()方法。

例如,如果当前类是直接继承自object,那当前类的new()方法返回的对象应该为:

def new(cls, *args, **kwargs):

return object.new(cls)

通常来说,当前类开始实例化时,new()方法会返回cls(cls指代当前类)的实例,然后该类的init()方法作为构造方法会接收这个实例(即self)作为自己的第一个参数,然后依次传入new ()方法中接收的位置参数和命名参数。

注意:如果new()没有返回cls(即当前类)的实例,那么当前类的init()方法是不会被调用的。

如果new()返回其他类的实例,那么只会调用被返回的那个类的构造方法。

class Foo(object):

def init(self, *args, **kwargs):

pass

def new(cls, *args, **kwargs):

return object.new(Stranger, *args, **kwargs)

class Stranger(object):

pass

foo = Foo()

print(type(foo))

》》》》

因此可以这么描述new()和ini()的区别,在新式类中new()才是真正的实例化方法,为类提供外壳制造出实例框架,然后调用该框架内的构造方法init()使其丰满。

如果以建房子做比喻,new()方法负责开发地皮,打下地基,并将原料存放在工地。

而init()方法负责从工地取材料建造出地皮开发招标书中规定的大楼,init()负责大楼的细节设计,建造,装修使其可交付给客户。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

本文标题: Python中new方法的详解

本文地址: http://www.cppcns.com/jiaoben/python/249961.html

python中new方法详解及_Python中new方法的详解相关推荐

  1. python中s和t的关系_python中set和frozenset详解

    set(可变集合)与frozenset(不可变集合)的区别: set无序排序且不重复,是可变的,有add(),remove()等方法.既然是可变的,所以它不存在哈希值.基本功能包括关系测试和消除重复元 ...

  2. python序列解包_python中解包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 序列解包(sequence unpacking)是python中非常重要和常用的 ...

  3. python列表前加星号是什么_Python中的星号:用途及使用方法(1)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 原作者:Trey Hunner Python中 *和**很常见.无论是对于编程萌新还是许多从其他编程语言( ...

  4. python封装方法有几种_Python中的封装有什么作用?

    展开全部 日常生活中可2113以看到很多的汽车5261,汽车包括车轮.发动机.车架等零4102部件.可以在车架1653上安装车轮,然后安装发动机,最后安装其他零件,刷漆.就形成了汽车.这个过程,是把各 ...

  5. python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解

    python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...

  6. python通过connect对象连接数据库对吗_Python连接数据库学习之DB-API详解

    前言 大家都知道在Python中如果要连接数据库,不管是MySQL.SQL Server.PostgreSQL亦或是SQLite,使用时都是采用游标的方式,所以就不得不学习Python DB-API. ...

  7. python中函数和类的区别_Python中函数和方法的区别

    简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...

  8. python中的排序方法都有哪些_Python中的排序方法sort(),sorted(),argsort()等

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...

  9. python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解

    python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...

  10. 用python生成九九乘法表的指令_Python中生成九九乘法表的方法有哪几种?

    九九乘法表是我们计算的基础,在Python中可以生成九九乘法表.大致有三种方法:列表推导式法.for循环法.while嵌套循环法.具体使用代码请看本文. 方法一.列表推导式法for i in rang ...

最新文章

  1. 华为笔试题---明明的随机数
  2. 推荐给c++学习者的经典
  3. 计算机网络中的时延有哪几部分,计算机网络中的四种延迟分别是什么?
  4. python的列表和元组
  5. 40. Combination Sum II **
  6. centos yum 安装java_Linux Centos 使用 yum 安装java
  7. servlet面试常问问题_50个Servlet面试问答
  8. 罐中研讨会:设置JBoss BRMS全日研讨会
  9. 【ElasticSearch】Es 缓存
  10. python如何运行程序_01
  11. Thingsboard 3.1.0 - REST API
  12. Java 算法刷题指南
  13. 电脑连接安卓手机摄像头的方法(含DroidCam安装包及简明使用教程)
  14. html元素标记不允许使用嵌套,第153天:关于HTML标签嵌套的问题详解
  15. 自制typora主题
  16. 解决vue中无法取得methods方法中的return值,获得是undefined
  17. 可以加急的计算机核心期刊,什么核心期刊可以加急
  18. 3.找回原来win10右键的方法
  19. oracle问题诊断,Oracle之常见问题诊断方法
  20. android如何实现qq登陆和qq分享,2021超详细mob平台图解教程?

热门文章

  1. DHCP服务器-配置
  2. linux deliver分发管理,Erlang/Elixir: 使用 Edeliver 进行自动化的持续部署
  3. 河北大学计算机在哪学,河北大学计算机科学与技术学院
  4. python3讨论交流地_讨论 - 廖雪峰的官方网站
  5. java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文
  6. WSDM 2022 | 点击率模型特征交叉方向的发展及CAN模型介绍
  7. SPSS的数据T检验
  8. linux shell程序设计实验报告,linux的shell脚本实验报告
  9. python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
  10. mysql简单分表_mysql分区分表哪个好