面试-python-魔术方法

大致描述功能作用

class A():

	# 打印对象的时候默认打印__str__的返回值,且这个方法的返回值一定要是字符串
	def __str__():
		return '__str__'

	# 程序结束 或者对象被删除,一定是对象被删除了,不是只一个引用被删除而已,这个不好用,尽量不用
	def __del__():
		pass

	# 先创建一个对象,因此在__init__之前先执行
	def __new__(cls):
		__instance = None

		import threading
		__lock = threading.Lock()
		
		with __lock:
			if not cls.__instance:
				cls.__instance = {}
		return cls.__instance 			

	#  拿到__new__创建的对象,进行你自己写的初始化工作
	def __init__(self):
		pass

	# 对象的运算符比较
	def __eq__(self, other):
		if self.a == other.a and self.b == other.b:
			return True
		return False

	# 对象运算符自定义后,一定要改一下这个__hash__,理论上eq改变hash也要改变
	def __hash__(self):
		return hash((self.a,self.b,self.c))


	# eq等于, gt大于, lt小于, ge大于等于, le小于等于

	# 设置属性的内容
	def __setattr__(self, name, val):
		pass

	# 如果不存在,会报错
	def __getattr__(self, name):
		pass

	# 使实例对象可以被调用
	def __call__():
		pass

	# 可迭代对象必须的
	def __iter__():
		pass

	# 迭代器必须的第二个魔术方法,第一个是__iter__()
	def __next__():
		pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值