标签: 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 对于词典数来说应用比较灵活。