python中new方法详解及_Python中new方法的详解
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方法的详解相关推荐
- python中s和t的关系_python中set和frozenset详解
set(可变集合)与frozenset(不可变集合)的区别: set无序排序且不重复,是可变的,有add(),remove()等方法.既然是可变的,所以它不存在哈希值.基本功能包括关系测试和消除重复元 ...
- python序列解包_python中解包
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 序列解包(sequence unpacking)是python中非常重要和常用的 ...
- python列表前加星号是什么_Python中的星号:用途及使用方法(1)
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 原作者:Trey Hunner Python中 *和**很常见.无论是对于编程萌新还是许多从其他编程语言( ...
- python封装方法有几种_Python中的封装有什么作用?
展开全部 日常生活中可2113以看到很多的汽车5261,汽车包括车轮.发动机.车架等零4102部件.可以在车架1653上安装车轮,然后安装发动机,最后安装其他零件,刷漆.就形成了汽车.这个过程,是把各 ...
- python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解
python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...
- python通过connect对象连接数据库对吗_Python连接数据库学习之DB-API详解
前言 大家都知道在Python中如果要连接数据库,不管是MySQL.SQL Server.PostgreSQL亦或是SQLite,使用时都是采用游标的方式,所以就不得不学习Python DB-API. ...
- python中函数和类的区别_Python中函数和方法的区别
简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...
- python中的排序方法都有哪些_Python中的排序方法sort(),sorted(),argsort()等
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...
- python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解
python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...
- 用python生成九九乘法表的指令_Python中生成九九乘法表的方法有哪几种?
九九乘法表是我们计算的基础,在Python中可以生成九九乘法表.大致有三种方法:列表推导式法.for循环法.while嵌套循环法.具体使用代码请看本文. 方法一.列表推导式法for i in rang ...
最新文章
- 华为笔试题---明明的随机数
- 推荐给c++学习者的经典
- 计算机网络中的时延有哪几部分,计算机网络中的四种延迟分别是什么?
- python的列表和元组
- 40. Combination Sum II **
- centos yum 安装java_Linux Centos 使用 yum 安装java
- servlet面试常问问题_50个Servlet面试问答
- 罐中研讨会:设置JBoss BRMS全日研讨会
- 【ElasticSearch】Es 缓存
- python如何运行程序_01
- Thingsboard 3.1.0 - REST API
- Java 算法刷题指南
- 电脑连接安卓手机摄像头的方法(含DroidCam安装包及简明使用教程)
- html元素标记不允许使用嵌套,第153天:关于HTML标签嵌套的问题详解
- 自制typora主题
- 解决vue中无法取得methods方法中的return值,获得是undefined
- 可以加急的计算机核心期刊,什么核心期刊可以加急
- 3.找回原来win10右键的方法
- oracle问题诊断,Oracle之常见问题诊断方法
- android如何实现qq登陆和qq分享,2021超详细mob平台图解教程?
热门文章
- DHCP服务器-配置
- linux deliver分发管理,Erlang/Elixir: 使用 Edeliver 进行自动化的持续部署
- 河北大学计算机在哪学,河北大学计算机科学与技术学院
- python3讨论交流地_讨论 - 廖雪峰的官方网站
- java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文
- WSDM 2022 | 点击率模型特征交叉方向的发展及CAN模型介绍
- SPSS的数据T检验
- linux shell程序设计实验报告,linux的shell脚本实验报告
- python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
- mysql简单分表_mysql分区分表哪个好