当前位置: 首页 > news >正文

python类动态属性,以属性方式访问字典

动态属性能够用来描述变化的类,在实际应用中容易遇到用到。

import logging
class Sample:def __init__(self):self.time=Noneself.sampleid=Noneself.mass=Noneself.beizhu=""self.num=0self.items={}#字典属性def __getattribute__(self, attr): #注意:attr是传入的属性名,不是属性值# print(attr)if attr!="items":   v=self.items.get(attr)if v!=None:return  vreturn object.__getattribute__(self, attr) #返回属性def __setattr__(self, attr,value): #注意:attr是传入的属性名,不是属性值# print([attr,value])# print(attr)# print(dir(self))if attr!="items": # print(dir(self))if hasattr(self, "items") and self.items.get(attr)!=None:self.items[attr]=valueelse:return object.__setattr__(self, attr,value)    else:return object.__setattr__(self, attr,value)if __name__=="__main__":s=Sample()s.sampleid="001"s.items={"a":"a","b":"b"}print(s.sampleid,s.a,s.b)s.a="a2"print(s.sampleid,s.a,s.b)

运行演示: 

D:\ma\python\report__stand2\simple>python s1.py
001 a b
001 a2 b

http://www.lryc.cn/news/368436.html

相关文章:

  • 招聘在家抄书员?小心是骗局!!!
  • Pytorch学习11_神经网络-卷积层
  • Qt实现程序单实例运行(只能运行1个进程)及QSharedMemory用法
  • HTTP协议分析实验:通过一次下载任务抓包分析
  • http网络服务器
  • 使用C++结合OpenCV进行图像处理与分类
  • 探索 Noisee AI 的奇妙世界与变现之旅
  • 【SCSS】use的详细使用规则
  • 数据结构(C):二叉树前中后序和层序详解及代码实现及深度刨析
  • Win11可以安装AutoCAD2007
  • C#操作MySQL从入门到精通(14)——汇总数据
  • 【设计模式深度剖析】【2】【行为型】【命令模式】| 以打开文件按钮、宏命令、图形移动与撤销为例加深理解
  • 【随手记】maplotlib.use函数设置图像的呈现方式
  • LLVM Cpu0 新后端 系列课程总结
  • 【云原生】Kubernetes----RBAC用户资源权限
  • ORA-01652 表空间不够解决方案
  • 亚马逊 AWS 视频转码功能、AWS Elemental MediaConvert 中创建和管理转码作业
  • RocketMQ可视化界面安装
  • 【ffmpeg】本地格式转换 mp4转wav||裁剪mp4
  • 基于Django+MySQL的智慧校园系统
  • Linux基础指令(一)
  • 三极管十大品牌
  • 需求记录(共享元素)
  • .Net 使用 MongoDB
  • 【TensorFlow深度学习】值函数估计:蒙特卡洛方法与TD学习
  • 成功解决ModuleNotFoundError: No module named ‘cv2’
  • 中国蚁剑 安装教程 2024年5月
  • Golang-分离式加载器(传参)AES加密
  • 速览三版HTTP的改进策略
  • window.open(“.html“,“_blank“) 执行是下载,并没有打开新窗口显示html