python的小知识集合


一、类

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. 注意事项:没有。

未完待续。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值