什么是Box?
Box的设计旨在轻松地替换python中的字典,从而增加点符号访问和其他功能!
Box会自动将无法访问的键作为属性安全地进行访问。您始终可以将conversion_box = False传递给Box以禁用该行为。
同样,添加到Box或BoxList对象的所有新字典和列表都将自动转换。
from box import Box
movie_box = Box({ "Robin Hood: Men in Tights": { "imdb stars": 6.7, "length": 104 } })
movie_box.Robin_Hood_Men_in_Tights.imdb_stars
# 6.7
有六种以上的方法可以自定义Box并使其适合您。
示例
由于Python的鸭子类型(duck typing)功能(增加了点符号访问),Box的设计旨在轻松地替换透明的字典。
初始化后设置的所有子字典或子字典将自动转换为Box对象。您始终可以对其运行.to_dict(),以将对象和所有子对象返回到常规词典中。
Box可以像dict一样实例化。
Box({'data': 2, 'count': 5})
Box(data=2, count=5)
Box({'data': 2, 'count': 1}, count=5)
Box([('data', 2), ('count', 5)])
# All will create
# <Box: {'data': 2, 'count': 5}>
Box是dict的子类,它重写了一些基本功能,以确保存储在dict中的所有内容都可以作为属性或键值进行访问。
small_box = Box({'data': 2, 'count': 5})
small_box.data == small_box['data'] == getattr(small_box, 'data')
添加到Box的所有字典(和列表)将在查找时转换为Box(或BoxList),从而允许递归点表示法访问。
Box还包括帮助程序函数,可将其转换回dict以及JSON,YAML,TOML或msgpack字符串或文件。