python类中系统自定义函数

2015-05-20  本文已影响0人  GTiller

标签: python类 双下划线特殊函数


今天遇到python类内部系统以双下划线开头和结尾的情况,特去学习一部分的应用情况,顺便记录一下。python 的OOP编程中,每个类拥有一些系统特殊定义的函数,比如__init__表示初始化类,相当于构造函数,建立对象时候会先调用这个方法来初始化一些成员变量。__del__表示析构函数,就是对象不再存在于作用空间时,会调用这个函数来释放空间。今天要记录两个比较特殊双下划线的函数:__getitem____contains__:

1、__getitem__、__contains__函数####

  • __getitem__函数表示通过索引获得数据,相当于data[key],通过在类中重写这个函数,我就可以使用该类的对象obj[key]来直接操作
  • __contains__函数在类的对象使用 in 和 not in时可以返回TRUE或者False。

2、代码####

class DoubleUnderline():
    def __init__(self, d=None):
        self.data = dict()
        self.data = d

    def __getitem__(self, key):
        print 'use __getitem__'
        return self.data[key]

    def __contains__(self, item):
        print 'use __contains__'
        return item in self.data


def main():
    data = dict()
    names = []
    for i in range(1, 5):
        names.append(str(i))
    val = 'a'
    for name in names:
        data[name] = val
        val = val + val
    dbline1 = DoubleUnderline(data) #类对象
    print dbline1['2']
    str1 = '3'
    print str1 in dbline1


if __name__ == "__main__":
    main()

3、输出结果####

use __getitem__
aa
use __contains__
True

4、使用环境####

一般对于dict词典数的应用比较合理,data[key]和 in、not in 对于词典数来说应用比较灵活。

5、其他类内部神奇函数如下链接####

Python 的神奇方法指南

上一篇 下一篇

猜你喜欢

热点阅读