栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python的小知识集合

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python的小知识集合

知识点
  • 一、类
    • 1.Python的__init__和__new__区别?


一、类 1.Python的__init__和__new__区别?

两者都是魔术方法,都是在特定的时候自动调用。

__init__初始化方法:

  1. 触发时机:实例化对象之后触发(实例化一个对象的时候有两个步骤:首先是造一个对象出来,然后再给这个对象初始化一下东西,这个init方法就是在初始化一些属性的时候触发的)。

  2. 作用:为对象添加对象的所属成员。

  3. 参数:一个self接受当前对象,其他的参数根据实例化的传参决定。

  4. 返回值:没有返回值

  5. 注意事项:没有

    __init__方法里面的self,实例化的对象是谁,这个self就是对于谁的调用。

__new__构造方法:

  1. 触发时机:实例化对象的时候触发(实例化一个对象的时候有两个步骤:首先是造一个对象出来,然后再给这个对象初始化一下东西,这个new方法就是在造对象的时候触发的)。此时self都还没有出来,只有cls(类)。

  2. 作用:管理控制对象的生成过程。(可以控制这个对象到底是生成还是不生成)

  3. 参数:一个cls接受当前的类,其余都根据当前传参而定。

  4. 返回值:可有可无,没有返回值的话,实例化的结果就是None。

  5. 注意事项:new魔术方法和init方法的参数一致,除了第一个。

    举个例子:

class Human:
	# 这里做的实际上是重载object自带的__new__()
	def __new__(cls,sex): # 这个cls就是类名
		# 在这里就可以控制这个对象是否生成
		# 如果这个的sex是女就生成这个对象,否则就不生成
		if sex == '女':
			object.__new__(cls)	# 上帝之手创建这个对象
		else:
			# 不生成对象
			return None
			
one = Human('女') # 这个对象可以生成
two = Human('男') # 不可以生成	

__del__析构方法:

  1. 触发时机:对象被系统回收的时候触发,或者是使用del方法的时候触发。
  2. 作用:回收程序使用过程中的信息和变量等。
  3. 参数:一个self接收当前对象。
  4. 返回值:没有。
  5. 注意事项:没有。

未完待续。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号