python 类中的特殊方法

  1. len
class name:
	self.list = [ ]
	def __len__()
		return len(list)
'''
len()方法的默认参数是序列, 然而如果一个类并不是序列类型的话, 
len(class) 就会隐式调用 class.__len__(), 所以对于自定义类, 想要
使用python一致性的 len()方法的话, 要自定义 class.__len__() 接口.
'''
  1. getitem
'''
与 class.__len__() 原理一样, class.__getitem__()是下标访问功能的接口, 迭代器也可以用这个接口去调用.
实现以后就可以把 name用作可迭代对象, name[posithon] , 同样这些一致性的内置方法  会隐式调用  name.__getitem__()
  1. iter
for i in object:
	pass
'''
object.__iter__() 是 迭代器接口
'''
  1. 其他的一些特殊方法, 跳转官方文档,列出一些常用的特殊方法
object.__repr__()  		#控制台打印object时,隐式调用的打印方法
object.__str__() 		#解释器内置函数 str(object) 隐式调用用,
						如果没有实现 object.__str__(), str(object) 会以 object.__repr__()作为替代
object.__bool__()		# bool(object) 时候隐士调用, 在 if object 语句中会隐式调用 bool(object)
						若object.__bool__()没有实现, 那么会以 object.__len__() 作为替代
object.__lt__(self, other)			#  x < y 
object.__le__(self, other)			#  x <= y
object.__eq__(self, other)			#  x == y
object.__ne__(self, other)			#  x != y
object.__gt__(self, other)			#  x > y
object.__ge__(self, other)			#  x >= y
object.__hash__(self)
 
  1. 总结
    python中 class 里面前后带 __ 都属于特殊方法, 特殊方法是专门为解释器内部调用准备的, 这代表了python的一致性, 几乎所有的 object 只要实现了对应的 特殊方法 就都可以使用统一的函数, 类似 len(), int()等, 只需要实现,而不需要直接使用, 只需要根据统一的内置函数调用即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值