zoukankan      html  css  js  c++  java
  • 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操作没有语法错误,那也什么都不能返回,没有实际意义。魔术函数重要的还是函数内部的代码,且这种代码等同于执行函数名称对应的调用方式

    最后送一张大图:

    转载请注明原文链接,对本文有任何建议和意见请在评论区讨论,谢谢!
  • 相关阅读:
    超市名词解释
    卖功能?买利益?还是买价值?
    店长如何防止顾客外流
    生鲜在卖场中的六大类别
    卖场商品ABCD分类原则
    零售业常用的数字管理公式及其意义
    零售店的利润类型分析
    把握好生鲜经营的关键因素
    常见的心理定位套路
    [转]New .Net三层架构
  • 原文地址:https://www.cnblogs.com/bjwu/p/9013055.html
Copyright © 2011-2022 走看看