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}
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
· AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
· InnoDB为什么不用跳表,Redis为什么不用B+树?
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
· 博客园出海记-开篇:扬帆启航
· 记一次 .NET 某汽车控制焊接软件 卡死分析
· 关于布尔类型的变量不要加 is 前缀,被网友们吐槽了,特来完善下
· C#中的多级缓存架构设计与实现深度解析
· 技术人日常避坑手册:高效工作,少踩坑