python dict 增加属性访问功能

实现类似数据库查询结果既可以索引访问,也可以属性访问

如 obj["a"] 和 obj.a

示例如下:

class ObjDic(object):
    '''
    字典增加按照属性访问功能
    仅支持按照 key中的属性访问 value
    如果字典中 value 为tuple, list, set, frozenset类型,不能递归按照属性访问
    如 d={"a":{"b":"c"}} 支持 d.a,不支持 d.a.b
    '''
    def __init__(self, d):
        for i,j in d.items():
            setattr(self, i, j)
            
    def __getitem__(self, index):
        try:
            return getattr(self, index)
        except:
            return None

测试

a = ObjDic({"a":"b"})
print a.a
print a["a"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,126评论 25 709
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,764评论 0 4
  • 辞职 这是我三十二岁这一年做的第一个决定 这三十二年,没有什么波澜起伏的事情 按部就班的读书、上班 行云流水、平淡...
    songfan阅读 365评论 0 0
  • 2017.10.15 18:05 打开App 打动我的地方: 人不为己天诛地灭,当我们作为人不成为我们自己的...
    陆陆姐阅读 189评论 0 2