Python的魔法方法__new__与__init__介绍
时间:2020-04-22
本文章向大家介绍Python的魔法方法__new__与__init__介绍,主要包括Python的魔法方法__new__与__init__介绍使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、概述
__new__负责创建类的实例对象,__init__负责对__new__创建的对象进行初始化,二者都由Python解释器自动调用。
二、示例
创建对象时,Python解释器会先调用__new__方法创建对象并返回,然后再调用__init__对创建好的对象进行初始化:
class Test: pass test = Test() #解释器的工作过程 1.test = object.__new__(Test) 2.object.__init__(test) #因为Test没定义__init__方法,所以采用基类的方法,object是所有类的基类
如果重写了__new__方法,就必须显式的调用基类的__new__方法创建对象返回,__new__是解释器实现的类方法:
class Test: def __new__(cls, *args, **kwargs): self = super().__new__(cls, *args, **kwargs) #也可以直接写为object.__new__(cls, *args, **kwargs),object类是所有类的基类 self.gender = '男' return self def __init__(self, name, age=0): self.name = name self.age = age test = Test('meng', age=21) #解释器的工作过程 1.test = Test.__new__(Test, 'meng', age=21) 2.Test.__init__(test, 'meng', age=21) test.gender #->男
原文地址:https://www.cnblogs.com/hanxiaomeng/p/12753617.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法