用 python 做了一个简单 dict 封装成 document,大家帮助 review 一下。:)(修改成 gist)

2014-05-28 15:02:11 +08:00
 openroc
主要目的针对dict少写[]和“”,如 a["test"]["aaa"], 可以简化成a.test.aaa

https://gist.github.com/openroc/8c42550c7a31bab5c338
3018 次点击
所在节点    Python
8 条回复
openroc
2014-05-28 15:04:50 +08:00
binux
2014-05-28 15:11:14 +08:00
class Obict(dict):
....__getattr__ = dict.__getitem__
....__setattr__ = dict.__setitem__
openroc
2014-05-28 15:14:28 +08:00
@blnux, 要支持list和dict,嵌套。:)
lifemaxer
2014-05-28 15:15:16 +08:00
@binux 又见牛人!上次的“uuid.uuid1()”
binux
2014-05-28 15:18:36 +08:00
@openroc 嵌套就是 return 的时候 Obict 包一下就完了,list 同理
而且,建议扩展基础类型的时候从 dict, 或者 UserDict 继承,保证类型兼容性。不然你让 keys, items, values, for loop 怎么办?
openroc
2014-05-28 15:22:25 +08:00
@binux, 嗯,类型兼容的确没有考虑,谢过。
clino
2014-05-28 15:54:22 +08:00
这个有类似的作用:
https://code.google.com/p/ulipad/source/browse/trunk/modules/dict4ini.py
不过是用在ini文件上

d = DictIni('t2.ini', format="%s:%s", hideData=True)
d.a.a = 'mama'
d.a.b = 'lubs me!'

d.b.a = 'i'
d.b.b = 'lub bosunmi!'

d.c.a = 'dada'
d.c.b = 'lubs me too!'
d.save()
chuangbo
2014-05-29 13:16:43 +08:00
赞同 @binux,继承 dict 是必须的。
web.py 的 Storage 是一个比较完整的实现。
https://github.com/webpy/webpy/blob/master/web/utils.py#L52

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX