python - 如何获取 types.SimpleNamespace 类型中的所有用户定义属性?

标签 python python-3.x

做的时候:

import types
ns = types.SimpleNamespace(alfa = 1, bravo = 2, charlie = 3)
print(dir(ns))

结果列表也包含所有类方法,因此:

['__class__', '__delattr__', ..., 'alfa', 'bravo', 'charlie']

如何获得仅包含用户定义属性的列表,因此 ['alfa', 'bravo', 'charlie'] 最好不要对属性名称进行可笑的文本匹配?

最佳答案

更新:

其实,我只是想起来你可以这样做:

>>> import types
>>> ns = types.SimpleNamespace(alfa = 1, bravo = 2, charlie = 3)
>>> list(ns.__dict__)
['charlie', 'bravo', 'alfa']
>>> sorted(ns.__dict__)
['alfa', 'bravo', 'charlie']
>>>

这样就简单多了。


只需使用 list comprehension过滤结果:

>>> import types
>>> ns = types.SimpleNamespace(alfa = 1, bravo = 2, charlie = 3)
>>> [x for x in dir(ns) if not x.startswith('__')]
['alfa', 'bravo', 'charlie']
>>>

值得庆幸的是,所有特殊方法/属性都以 __ 开头和结尾,因此很容易过滤掉它们。

如果你想允许只以 __ 开头的名称,那么你可以使 if 子句更健壮一些:

[x for x in dir(ns) if not (x.startswith('__') and x.endswith('__'))]

关于python - 如何获取 types.SimpleNamespace 类型中的所有用户定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532080/

相关文章:

python - 检测图像边缘是否几乎是直线

python - 使用多个索引标签绘制的 Pandas

使用 or 运算符时,Python 正则表达式的模糊搜索不会返回所有匹配项

javascript - tensorflowjs 加载重新训练的 coco-ssd 模型 - 在浏览器中不起作用

python - 如何将 FastAPI UploadFile(zip 文件)以 .zip 格式保存到磁盘?

python - 无法执行lua代码,从文件读取

python - Django 'AsgiRequest' 对象没有属性 'content_type'

python - 如果值不在 self._dict : TypeError: unhashable type: 'StyleProxy' in python

python - 使用 pandas 将日期、时间和纳秒解析为日期时间对象

python-3.x - 10**10循环时间下pypy3发生了什么