码迷,mamicode.com
首页 > 其他好文 > 详细

item系列

时间:2017-04-25 21:09:46      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:自动   int   返回值   print   elf   key   就会   删除   self   

#__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系列

标签:自动   int   返回值   print   elf   key   就会   删除   self   

原文地址:http://www.cnblogs.com/IQ-Python/p/6764092.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!