Python 魔术方法笔记

Posted Byron NG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 魔术方法笔记相关的知识,希望对你有一定的参考价值。

魔术方法总是被__包围, 如__init__ , __len__都是常见的魔术方法,这里主要写一下我遇到的一些魔术方法

setitem

对某个索引值赋值时

即可以进行赋值操作,如

    def __setitem__(self, k, v):
        self.put(k, v)

在上述代码的情况下,可以执行p[\'key\'] = value操作,即将key赋给k,value赋给v,执行put(k, v)函数。所以,__setitem__建立的前提,是要这个函数内的操作本来具有赋值的性质。

getitem

使用索引访问元素时

这个操作时取值操作,如

    def __getitem__(self, key):
        return self.get(key)

在有上述函数的情况下,可以执行z = p[\'key\'] 操作,即将\'key\'传入get(key)函数中,进行取值。

contain

使用 in 操作测试关系时

当你想要你的对象可以使用in操作时,可以使用这个函数:

def __contains__(self, key):
    if self._get(key, self.root):
        return True
    else:
        return False

有了这个函数即可执行: if \'Northfield\' in my_zip_tree:


PS:理解魔术函数最重要的就是,函数名称对应的是一个调用方法的表示,如__contain__( )。如果这个函数里面什么都不写,那么就算可以执行in操作没有语法错误,那也什么都不能返回,没有实际意义。魔术函数重要的还是函数内部的代码,且这种代码等同于执行函数名称对应的调用方式

最后送一张大图:

以上是关于Python 魔术方法笔记的主要内容,如果未能解决你的问题,请参考以下文章

python 魔术功能和广播(仅限ipython笔记本)

python魔术方法

学习笔记:python3,代码片段(2017)

Python:不应该使用的魔术方法

怎么让你的Python代码更优雅!

php 魔术方法学习笔记