首页 > 其他 > 详细

类方法笔记

时间:2020-05-28 09:08:59      阅读:38      评论:0      收藏:0      [点我收藏+]
class Foo(object):
def __init__(self):
self .data={} #创建一个空字典

def __getitem__(self, key):
print(‘__getitem__‘, key)
return self .data.get(key) #效果等于 self .data[key]


def __setitem__(self, key, value):
print(‘__setitem__‘, key, value)
self .data [key]=value #把实例变成一个字典

def __delitem__(self, key):
print(‘__delitem__‘, key)
del self .data [key]


obj = Foo() #创建一个实例obj
obj[‘name‘]=‘JC‘ #设置后就可以像字典一样赋值,调用了__setitem__函数
obj[‘age‘]=34 #obj调用age时,会自动运行__getitem__
print(obj[‘name‘]) #调用了__getitem__,如果没有设置return的内容,则直接返回None,
# 其实只要没有设置retur,那么不管是name还是其他参数都一样返回NoNe
print(obj .data [‘name‘]) #没有设置__getitem__里面return的内容也会返回字典里面的Valu值
print(obj.data) #打印出obj实例中存的字典{‘name‘: ‘JC‘, ‘age‘: 34}

#del obj[‘sdfsfd‘]#没有设置__delitem__(self, key)下面的内容,其实就是调用了del这个函数
del obj[‘name‘]
print(obj.data) #把‘name‘: ‘JC‘删除了,返回{‘age‘: 34}

#用于封装字典,用户访问里是访问实例对像,而不是访问字典

‘‘‘
未设置__getitem__里面return的内容
__setitem__ name JC
__setitem__ age 34
__getitem__ age
None
JC
{‘name‘: ‘JC‘, ‘age‘: 34}
----------------------------------------
设置__getitem__里面return的内容
__setitem__ name JC
__setitem__ age 34
__getitem__ age
JC
JC
{‘name‘: ‘JC‘, ‘age‘: 34}


‘‘‘

类方法笔记

原文:https://www.cnblogs.com/hua264/p/12977740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!