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

#大家都知道,平常操作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"])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值