__iter__
iter(object[, sentinel])
object 是支持迭代对象的集合,,且支持迭代协议(iteration protocol)或者支持序列协议(sequence protocol)
sentinel -- 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。
for i in iter(列表or集合):
print(i)
__call__
当一个类实现了特殊方法__call__
,该类的实例就变成了可调用的类型, 对象名() 等价于 对象名.__call__()
,有时候可以简化对象的调用,让对象变成可调用的对象, 实现__call__即可.
__enter__和__next__
支持上下文管理器协议。上下文管理器就是支持上下文管理器协议的对象,它是为了with而生。当with语句在开始运行时,会在上下文管理器对象上调用 __enter__ 方法。with语句运行结束后,会在上下文管理器对象上调用 __exit__ 方法