#大家都知道,平常操作class类的或者object对象的属性,都是用:类名/对象名.属性名
#其实,这种操作方法就是在启动调用与attr内置方法相关的函数:
# __getattr__()、__setattr__()、__delattr__()
#----------------------item系列函数---------------------------------------
#其实:class类或者object对象的属性还可以使用类似字典dict的操作方法:类名/对象名[属性名]
#这样,就是在调用item相关的内置函数:
# __getitem__()、__setitem__()、__delitem__()
#注意:item系列方法,都必须写出来,才会调用;否则不会支持:类名/对象名[属性名];
#写出来后,就两种操作属性的方式都可以支持;代码如下
#区别:attr系列,不写出来,默认支持:类名/对象名.属性名
 #      item系列,若不写出来,不支持:类名/对象名[属性名]

class  Foo:
    def __init__(self,high,weight,job):
        self["high"]=high#只有当下面写了item系列方法后,这样run代码才会成功,否则会报错;因为这样已经调用了item系列方法
        self["weight"]=weight
        self.job=job


    def __getitem__(self, item):
        print("启动__getitem__")#这句话只是看运行效果,是否启动该函数
        return self.__dict__[item]


    def __setitem__(self, key, value):
        print("启动__setitem__")#这句话只是看运行效果,是否启动该函数
        self.__dict__[key]=value

    def __delitem__(self, key):
        print("启动__delitem__")#这句话只是看运行效果,是否启动该函数
        self.__dict__.pop(key)

if __name__ == '__main__':
    
    f=Foo(170,70,"演员")
    f["name"]="吴奇隆"
    print(f["name"])

python---class:item系列方法 (区别:attr系列方法)

相关文章:

  • 2021-04-12
  • 2022-12-23
  • 2021-07-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-05
  • 2022-02-13
  • 2022-12-23
  • 2021-07-27
  • 2021-10-04
  • 2021-05-19
相关资源
相似解决方案