0
点赞
收藏
分享

微信扫一扫

魔法方法《一》__getitem__(self, item),__setitem__(self, key, value)、__delitem__(self, key)

斗米 2023-02-21 阅读 60


​一、__getitem__(self, item)​

使用这个方法最大的印象就是调用对象的属性可以像字典取值一样使用中括号['key']

使用中括号对对象中的属性进行取值、赋值或者删除时,
会自动触发对应的__getitem__、__setitem__、__delitem__方法

class Student(object):

def __init__(self, user_dic):
self.value= user_dic 对象属性

def __getitem__(self, item):
return self.value[item] getitem方法


user_dic = {'zhangsan': 14, 'lisi': 15, 'wanger': 16, 'mazi':17}
student = Student(user_dic)

print(student['lisi'])

15

初始化几个属性并不重要,关键是看 ​​__getitem__​​的返回值。

​二、字典获取__getitem__、设置__setitem__、删除__delitem__数据​

2020-12-18更新

class Student(object):

def __init__(self, user_dic ):
self.value = user_dic

def __getitem__(self, item):
print ('__getitem__', item)
return self.value[item]

def __setitem__(self, key, value):
print ('__setitem__', key, value)
self.value[key] = value

def __delitem__(self, key):
print ('__delitem__', key)
del self.value[key]

def __len__(self):
return len(self.value)


user_dic = {'zhangsan': 14, 'lisi': 15, 'wanger': 16, 'mazi':17}

stu = Student(user_dic)
print (stu['lisi']) 取值数据
stu['zhaoliu'] = 32 设置数据
print(user_dic)
del stu['lisi'] 删除数据
print (len(user_dic)) 返回数据长度
print(user_dic)

魔法方法《一》__getitem__(self, item),__setitem__(self, key, value)、__delitem__(self, key)_数据


举报

相关推荐

0 条评论