zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Portal的简单使用
    Portal介绍
    什么是SOO?
    使用RAD和 WebSphere Portal Server开发JSF portlet (二)
    JAVA用HttpClient来模拟浏览器GET,POST [转]
    使用 Application Developer V7 来创建和部署 JSR 168 协作 portlet
    Faces Portlet开发框架初体验
    Portlet
    DB2 乱码
    安装完Portal Server后,启动Server出现如下错误信息! 无法解决!
  • 原文地址:https://www.cnblogs.com/IQ-Python/p/6764092.html
Copyright © 2011-2022 走看看