首页 > 代码库 > item系列
item系列
#__setitem__赋值方法,在进行obj[name]=value时,会触发执行该方法
#__delitem__删除方法,在进行del obj[name],就会触发执行该方法
#__getitem__查询方法,在进行读取obj[name]的值时,就会触发执行该方法
#把对象操作属性模拟成字典的格式
#item系列与attr系列都是方法,都是在定义阶段,而反射是内置函数,是在使用阶段
#item系列是在对象进行字典形式的操作时,在会执行相应方法,而attr系列是不同的,
class Foo:
def __init__(self,name):#2 不能有返回值
self.name =name #把实例化对象给self,name值赋给self.name,
# 即实例化对象的name属性中,3
def __getitem__(self, item): #34
return self.__dict__[item]
def __setitem__(self, key, value): #23
self.__dict__[key] =value
def __delitem__(self, key): #56
self.__dict__.pop(key)
def __str__(self): #必须有返回值,且返回值是str型 45
return str(self.__dict__)
f =Foo(‘egon‘) #执行Foo(),触发__init__(如果有),就要进行传值,然后执行__init__中的
#代码,1,当__init__执行完了,就在f空间字典中产生name属性(变量)
f[‘age‘]=18 #遇到obj[name]=value形式,就会自动触发__setitem__方法 ,22
print(f[‘name‘]) #遇到obj[name]形式,就会自动触发__getitem__方法,当该方法执行完了,
#才执行打印,33
print(f) #打印对象f,就会触发__str__方法,当执行完__str__,才会执行打印 44
#delattr(f,‘age‘)
del f[‘age‘] #遇到del obj[name]形式,就会自动触发__delitem__方法,55
print(f)
item系列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。