day19-3个双下item方法

复制代码
#使用双下item方法来实现属性的增删改查:
# 查:__getitem__  增改:__setitem__  删除: __delitem__
class Goods:
    def __init__(self,name):
        self.name = name  #{'name':'apple'},self.__dict__[key] = value,
                          # self.__dict__['name'] = 'apple'
    def __getitem__(self,key):
        #if hasattr(self,key):如果self里面有key才返回。
        #    return self.__dict__[key]
        return self.__dict__[key]
    def __setitem__(self,key,value):
        self.__dict__[key] = value  #相当于dic[key]=value,实现字典的增改。
    def __delitem__(self,key):
        del self.__dict__[key]

g = Goods('apple') #g是对象也是字典。
print(g['name']) #apple,g['name']启动__getitem__方法。查看属性。
print(g.name) #apple

g['price'] = 8 #启动__setitem__方法来增加属性。
print(g['price']) #8
print(g.price) #8

g.__dict__['name'] = 'pear'
print(g['name']) #pear,启动__setitem__方法来修改属性。

del g['name'] #启动__delitem__来删除属性。
print(g.__dict__) #{'price': 8}
复制代码

 

posted @   梁劲雄  阅读(110)  评论(0)    收藏  举报
编辑推荐:
· 别做抢活的导演:代码中的抽象层次原则
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
阅读排行:
· 阿里巴巴为什么禁止超过3张表join?
· 博客园众包线下沙龙第1期:云栖开发者基地,共建技术新天地
· 让 AI 帮我部署网站,太方便了!
· 别做抢活的导演:代码中的抽象层次原则
· .NET周刊【7月第1期 2025-07-06】
点击右上角即可分享
微信分享提示