dict 大家都知道,然后我想通过 dict.a 这样访问他的 key.想法很美好,但是实现上都很蹩脚,比如 dict.items 到底算是属性呢还是算方法呢?
所以我就改写了一下用法是这样的
arg_post = LazeAttrDict(
{'a': 2, 'keys': 'kk'},
{
'a': {
'access': str
},
'b': {
'default': 'default',
},
'items': {
'default': [1, 2]
},
'values': {
'default': 'vvv'
}
})
assert arg_post.a == "2"
assert arg_post.b == "default"
assert arg_post.items == [1, 2]
assert arg_post.values == "vvv"
# 访问 dict 方法
print("items 方法")
for k, v in arg_post._items():
print('\t', k, v)
print("keys 方法")
print("\t", list(arg_post._keys()))
d = dict(**arg_post)
print("dict 方法\n\t", d)
print("唯一的 bug")
print(arg_post.keys)
结果
items 方法
keys kk
a 2
values vvv
b default
items [1, 2]
keys 方法
['keys', 'a', 'values', 'b', 'items']
dict 方法
{'keys': 'kk', 'b': 'default', 'a': '2', 'items': [1, 2], 'values': 'vvv'}
唯一的 bug
<bound method Mapping.keys of <__main__.LazeAttrDict object at 0x101c05c50>>
这个 dict 类第二个参数是用来自动校验参数的,有默认值,和转化类型两种方式.
要是 keys 那个方法也可以干掉就太完美了.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.