白激浪  

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__()输出

  

    

posted on 2021-12-08 10:35  白激浪  阅读(143)  评论(0)    收藏  举报