免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: tianshizhiluan
打印 上一主题 下一主题

如何像访问属性一样访问字典元素?? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2010-08-22 22:29 |只看该作者
本帖最后由 tianshizhiluan 于 2010-08-22 22:56 编辑

回复 9# luffy.deng


    说你的功能没有那么强悍,你还不相信,看看你的代码的bug:
  1. foo = {'a': 1,
  2.        'b': 2,
  3.        'c': {'a': 22
  4.            }
  5.        }
  6. class Obj(object):
  7.     def __getattribute__(self,name):
  8.         if isinstance(object.__getattribute__(self, name),dict):
  9.             setattr(self,name,type(name,(type(self),),
  10.                                    object.__getattribute__(self, name))())
  11.         return object.__getattribute__(self, name)

  12. Foo= type('Foo',(Obj,),foo)()

  13. #看看下面这条指令会发生什么?
  14. #是错误,而我的代码就能完成这样的功能。
  15. print Foo['c'].a
复制代码
不过我还是非常感谢你的回帖,你对python的理解很好,我正好有问题真心请教?这是链接:http://bbs.chinaunix.net/viewthr ... &extra=page%3D1

论坛徽章:
0
12 [报告]
发表于 2010-08-22 22:37 |只看该作者
回复 11# tianshizhiluan

我只是演示一下意图,至于你说的bug  我想加个异常处理没什么难的。

论坛徽章:
0
13 [报告]
发表于 2010-08-22 22:43 |只看该作者
补充一下  你可能没有完全看懂我的意思   Foo根本就不是一个字典 你为什么要Foo['c']?

论坛徽章:
0
14 [报告]
发表于 2010-08-22 22:44 |只看该作者
本帖最后由 luffy.deng 于 2010-08-22 22:54 编辑

回复 11# tianshizhiluan
补充一下  你可能没有完全看懂我的意思   Foo根本就不是一个字典 你为什么要Foo['c']?你要求的不是 Foo.c.a这样访问么?
就代码功能而言我认为我写的已经实现了你的要求 :1、生成一个东西用 .  访问  2、可以递归。
当然这只是办法之一,其他办法前面大家已经讨论了很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP