字典类对象的属性访问

ya.dotdict的Python项目详细描述


https://github.com/knowikow/ya.dotdict.py/workflows/build/badge.svg

又是一个多迪克特

为字典提供属性访问的Python库。 库提供以下类:

  • ya.dotdict.DotDict替代dictcollections.defaultdict
  • ya.dotdict.DotDictMixin:一个mixin类,可用于向任何dict类添加属性样式访问。 ya.dotdict.DotDict是根据这个mixin类实现的

所有代码示例假定:

>>> from ya.dotdict import *

简单用例:将字典项作为属性访问

DotDict可用作dict的替代品:

^{pr2}$

删除属性也可以按预期工作:

>>> del d.spam
>>> d.spam
Traceback (most recent call last):
   ...
AttributeError: spam

创建默认值(如collections.defaultdict

DotDict可用作defaultict的替代品:

>>> d = DotDict(lambda: 'eggs')
>>> d.spam
'eggs'
>>> d.spam = 100
>>> d['spam']
100
>>> d._default_factory = lambda: 'foo'
>>> d.bar
'foo'

如果默认值factory接受参数,则向其传递键:

>>> d._default_factory = lambda key: [key, 1000]
>>> d.foo
['foo', 1000]

如果默认值factory接受多个参数,则将引发TypeError:

>>> d._default_factory = lambda x, y: [x, y]
Traceback (most recent call last):
   ...
TypeError: defult_factory can only take zero or one argument

DotDictMixin

一个mixin类,提供对dict类类的属性访问。DotDict是使用DotDictMixin实现的,如下所示:

class DictClass(DotDictMixin, dict): pass

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java InputStream对象在声明后关闭   java未定义名为“transactionManager”的bean重命名transactionManager   java“jar”命令何时会拒绝将类添加到java中。jar文件?   java JPA标准依赖WHERE子句   安卓中从SD卡读取文本文件时出现java错误   java直接启用类似位置的权限   使用@WebMvcTest和Mockito-BDDMockito对SpringBoot-RestController进行java测试   java JSESSIONID存储在哪里?   java jtextarea鼠标事件覆盖容器鼠标事件   java DRL无法解析动态加载的类   java是从一个方法返回多个对象的最简单方法   java自定义按钮/编辑框是否不可见?   java GUI如何在保存用户输入的同时在面板或框架之间切换   swing Java自定义JSlider不会更新   GridBagLayout中的java超过1个JPanel   java从ProjectReactor中的flux中采样除第一个元素外的所有元素   Java泛型和泛型类型   Java代码生成宽指令的jvm