Python-类中的特殊属性和方法
类中有许多特殊方法,被称为magic method 或 speciall method
它们可能,在创建一个类的时候就已经存在,即便我们并没有显式的定义,而且存在也不一定能调用
这些方法一般以__method__()形式存在
查看
使用dir(object),可以查看该对象具有的方法和属性
常见的方法有
__new__, __init__, 初始化方法,new是先于__init__调用的
__iter__, __next__, 实现迭代器
__setitem__, __getitem__, __delitem__, 设置对象的元素
__setattr__, __getattr__, __delattr__, 设置对象的属性
__str__, __repr__,
__call__
调用方式
1、可以如同正常调用
object.__method__()
2、特别的调用形式
1)object ———— 调用__repr__ () 与 object.__repr__()等价
2)str(object) ———— 调用 __str__() 等于 object.__str__()
3)object[‘xx’] ——— 调用__getitem__() 如果元素不存在
4)object['xx'] = n ———— 调用__setitem__(),设置 ‘xx’ =n
5)del object[‘xx’] ———— 调用__delitem__()
6)object.x = y ———— 调用__setattr__()设置 x 属性的值为 y
7)object() ————调用自身,相当于 object.__call__()
总结思考
这些特别的调用形式中,其实可以理解,列表对象是怎么取出一个值的,其实就是列表调用__getitem__()方法
至于for循环,是让遍历的序列先调用__iter__(),得到迭代器,然后调用__next__()输出

浙公网安备 33010602011771号