该类构造如下:

class Bunch(dict):"""Container object for datasetsDictionary-like object that exposes its keys as attributes.>>> b = Bunch(a=1, b=2)>>> b['b']2>>> b.b2>>> b.a = 3>>> b['a']3>>> b.c = 6>>> b['c']6"""def __init__(self, **kwargs):super(Bunch, self).__init__(kwargs)def __setattr__(self, key, value):self[key] = valuedef __dir__(self):return self.keys()def __getattr__(self, key):try:return self[key]except KeyError:raise AttributeError(key)def __setstate__(self, state):# Bunch pickles generated with scikit-learn 0.16.* have an non# empty __dict__. This causes a surprising behaviour when# loading these pickles scikit-learn 0.17: reading bunch.key# uses __dict__ but assigning to bunch.key use __setattr__ and# only changes bunch['key']. More details can be found at:# https://github.com/scikit-learn/scikit-learn/issues/6196.# Overriding __setstate__ to be a noop has the effect of# ignoring the pickled __dict__pass

obj.var原理是什么呢?

实践方案:注释掉 __setattr__,在__getattr__中打印信息

class Bunch(dict):"""Container object for datasetsDictionary-like object that exposes its keys as attributes.>>> b = Bunch(a=1, b=2)>>> b['b']2>>> b.b2>>> b.a = 3>>> b['a']3>>> b.c = 6>>> b['c']6"""def __init__(self, **kwargs):print("init start")super(Bunch, self).__init__(kwargs)print("init end")"""def __setattr__(self, key, value):print("setattr init",key,value)self[key] = valueprint("setattr end",key,value)"""def __dir__(self):return self.keys()def __getattr__(self, key):print("get key:{0}".format(key))try:return self[key]except KeyError:raise AttributeError(key)def __setstate__(self, state):# Bunch pickles generated with scikit-learn 0.16.* have an non# empty __dict__. This causes a surprising behaviour when# loading these pickles scikit-learn 0.17: reading bunch.key# uses __dict__ but assigning to bunch.key use __setattr__ and# only changes bunch['key']. More details can be found at:# https://github.com/scikit-learn/scikit-learn/issues/6196.# Overriding __setstate__ to be a noop has the effect of# ignoring the pickled __dict__pass
b = Bunch(a=1, b=2)
b.a
b.b

init start
init end
get key:a
get key:b

上面可以证明是__getattr__的作用

强大如斯的Bunch类相关推荐

  1. php 图片透明,PHP_功能强大的PHP图片处理类(水印、透明度、旋转),非常强大的php图片处理类,可 - phpStudy...

    功能强大的PHP图片处理类(水印.透明度.旋转) 非常强大的php图片处理类,可以自定义图片水印.透明度.图片缩放.图片锐化.图片旋转.图片翻转.图片剪切.图片反色. * 图片处理函数功能:缩放.剪切 ...

  2. Java 随机实现“泰坦”与“宙斯”之间的模拟交战。说明:本题以希腊神话中宙斯和泰坦间的交战为背景。分别建立宙斯和泰坦类......

    题目要求: 随机实现"泰坦"与"宙斯"之间的模拟交战.说明:本题以希腊神话中宙斯和泰坦间的交战为背景. (1)分别建立宙斯和泰坦类,两个类都有属性"血 ...

  3. 虎记:强大的nth-child(n)伪类选择器玩法

    写在前面的戏: 最近参加了度娘前端IFE的春季班,刷任务,百度真是有营销头脑,让咱们这帮未来的技术狂人为他到处打广告(我可不去哪),其中做的几个任务中有几个以前没有用到的东西, 也算是有些许收获(现在 ...

  4. 梅斯大学计算机类,驻法使馆教育处与教育部公布更新法国高校名单

    序号法文校名中文校名 1Institut d"Ingénièrie Informatique de Limoges利摩日计算机工程学院 2Agrocampus Ouest:Institut ...

  5. 梅斯大学计算机类,研究称“世界首台计算机”或诞生于公元前205年

    原标题:研究称"世界首台计算机"或诞生于公元前205年 1901年,人们在希腊安迪基亚拉岛海域的船难残骸中发现了一个奇怪的如时钟般精确的装置,被认为是"世界首台计算机&q ...

  6. 很强大的java图片拼接工具类,可用于各种图片创建、图片生成、图文拼接、藏宝图分块拼接、分享海报

    ImgJoinUtil图片拼接工具类 import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGIm ...

  7. 强大的Java Json工具类

    Json解析所需jar包:http://download.csdn.net/detail/u014676619/9238793 工具类: import java.io.BufferedReader; ...

  8. Logger-功能强大使用方便的Log日志打印工具类

    介绍 Android开发中Log日志打印对开发者来说是非常重要的功能.但是感觉Log写多了也是烦,每次都需要设置一个TAG过滤值和具体的打印信息,而且打印的信息也不够丰富. 这里我推荐一个功能强大的L ...

  9. ccc-sklearn-13-朴素贝叶斯(1)

    朴素贝叶斯 一种直接衡量标签和特征之间概率关系的有监督学习算法,专注分类的算法,基于概率论和数理统计的贝叶斯理论.在计算的过程中,假设特征之间条件独立,不进行建模,采用后验估计. sklearn中的朴 ...

  10. 朴素贝叶斯法 - 垃圾邮件分类

    本文基于朴素贝叶斯构建一个分类垃圾邮件的模型,研究对象是英文的垃圾邮件. 邮件内容保存在txt文件中,其中分为训练样本train和测试样本test. 在训练样本中正常邮件命名为:pos:垃圾邮件命名为 ...

最新文章

  1. 分布式服务框架原理与实践pdf_深度解析微服务治理的技术演进和架构实践
  2. git 修改全局配置
  3. 新手向:从不同的角度来详细分析Redis
  4. 电动力学每日一题 2021/10/23 载流板产生的电磁场
  5. Android数据存储之SharePreference和内部存储
  6. Elasticsearch实现原理分析
  7. java8.0 platform图_Java Platform SE binary语言-Java编程32位/64位版(jdk-jeb)下载V8.0.2510.8官方安装版-西西软件下载...
  8. Class 'QrCode' not found ? 和 laravel 生成二维码接口(Simple QrCod)
  9. Oracle EBS连接数不足
  10. 不要让别人左右自己的心情
  11. 配置spring boot 内置tomcat的accessLog日志
  12. GB-T 15834-2011《标点符号用法》文档的格式问题
  13. gwas snp 和_Science | 群体研究新思路:De novo + GWAS
  14. 逆向工具IDA安装教程
  15. 推荐一款能够将爱奇艺qsv、腾讯qlv、优酷kux完美转换成mp4的三合一全能格式转换器
  16. 阿里云搭建WordPress系统
  17. 百度bae部署java项目
  18. CentOS 7 安全加固、检测、审计
  19. 浅谈Md5+Salt加密
  20. python123判断火车票座位_[python篇]自己动手实现火车票中转查询

热门文章

  1. 学计算机的是不是都非常木讷,北大学神韦东奕​是正常人吗?内向木讷是缺点​,拿不出手?​...
  2. 新手如何配置WordPress站点
  3. 计算机绘图综合训练大题,工程制图与计算机绘图综合实训报告汇编.doc
  4. GooglePlay商店如何优化
  5. LTE下行传输机制--PBCH
  6. 毕业3年,从滴滴实习到阿里P7,我整理的超全学习指南
  7. 如何产生JIC文件(sof+ELF=jic)
  8. STM32F103_study61_The punctual atoms(Clock System Intro)
  9. Tornado @tornado.gen.coroutine 与 yield
  10. 一个小型VC项目的开发