Python 小知识点(8)-- __new__
第一段代码如下:
class Foo(object): def __init__(self,name):
self.name = name print("Foo __init__") def __new__(cls, *args, **kwargs):
print("Foo __new__")
return object.__new__(cls)
f = Foo("Td")
输出结果为:
Foo __new__
Foo __init__
当把return object.__new__(cls)注释了后:
代码如下:
class Foo(object): def __init__(self,name):
self.name = name def __new__(cls, *args, **kwargs):
print("Foo __new__")
#return object.__new__(cls) # cls此时表示Foo
f = Foo("Td") 结果为:Foo __new__
结论:
对比上述两种结果:可以得出__new__是用来实例化,在__new__中调用了__init__,简而言之,在实例化是是__new__触发了__init__方法。(默认就有)
return object.__new__(cls)的作用:继承父类的__new__方法。
(1) object.__new__(cls):继承父类的写法,
(2) cls表示子类(当前类对象)
源码学习地址:https://gitee.com/FelixBinCloud/PythonLearn/commit/384f0d77502ec9d02c66fcb9b7ba1672619885a1
Python 小知识点(8)-- __new__的更多相关文章
- python小知识点总结
小知识点总结 1.python2和python3的区别 python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...
- Python小知识点(3)--装饰器
(1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func): def done(*args,**kwargs): star ...
- python小知识点
问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法# s=0# for x in a:# ...
- python小知识点随笔
可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符 1.关于字符串编码 ASCII编码 占用一个字节 二进制11111111=十进制255 所以 ...
- Python小知识点(5)--面向对象部分
面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.--------------------我的手机< ...
- Python 小知识点(7)--类的创建方式
1. 创建类的第1方式(常用) class Foo(object): def func(self): print("Hello Foo") 2.创建类的第2方式 def func( ...
- Python小知识点(4)--模块相关
1.模块: 定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组 ...
- Python小知识点(2)
1.简述Python的运行过程 在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件. 我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器 ...
- Python 小知识点(1)
1.Python命名规则------>下划线连接 girl_of_wfb="lgl" 2.常量-----名称全大写->WFB="WFaceBoss&qu ...
随机推荐
- OPEN(SAP) UI5 学习入门系列之三:MVC (下) - 视图与控制器
继续来学习UI5的MVC模型吧,这次我们来探讨视图与控制器. 1 视图 在MVC中,视图用来定义和渲染UI.在UI5中,视图的类型是可以自定义的,除了以下预定义的四种视图类型之外,你也可以定制自己的视 ...
- 内联汇编实现 memcpy 和 memset
#pragma check_stack( off) LPVOID __cdecl _memcpy(void * dst, void* src, size_t size) { int dwSize = ...
- 写一个Python的windows服务
1. 安装pywin32和pyinstaller pip install pywin32 pip install pyinstaller 2.写一个服务Demo # -*- coding: utf-8 ...
- linux自学(三)之开启虚拟机
上一篇:linux自学(二)之centos7镜像安装 前面都已经铺垫好了,下面就是开始安装镜像了,真正的开启一台linux机器. 点击开启此虚拟机,如图: 之后就是等待了,然后就是开始配置,首先如下图 ...
- stm32寄存器版学习笔记08 DMA
DMA(Direct Memory Access),直接存储器访问.DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高.stm32f10 ...
- Hadoop常见错误问题及解决方法总结二
问题导读:1.遇到问题该如何排除错误?2.看不到namenode的可能原因是什么?3.地址占用该如何解决?4.could only be replicatied to 0 nodes, instead ...
- C#中 this关键字 四种用法
/// <summary> /// 主程序入口 /// </summary> /// <param name="args"></param ...
- python3 scrapy main运行调式
from scrapy.cmdline import execute import sys import os sys.path.append(os.path.dirname(os.path.absp ...
- Windows下Redis的使用
Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括st ...
- LeetCode 430. Flatten a Multilevel Doubly Linked List
原题链接在这里:https://leetcode.com/problems/flatten-a-multilevel-doubly-linked-list/description/ 题目: You a ...