如何在中获取所有用户定义的属性types.SimpleName空间类型?

2024-09-27 07:26:28 发布

您现在位置:Python中文网/ 问答频道 /正文

进行以下操作时:

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

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

^{pr2}$

如何只获取用户定义属性的列表,从而['alfa', 'bravo', 'charlie'],而不需要对属性名进行荒谬的文本匹配?在


Tags: 方法用户import列表属性定义dirtypes
1条回答
网友
1楼 · 发布于 2024-09-27 07:26:28

更新:

我只记得你能做到:

>>> 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来过滤结果:

^{pr2}$

谢天谢地,所有特殊的方法/属性都以__开头和结尾,因此它们很容易被过滤掉。在

如果希望只允许以__开头的名称,那么可以使if子句更加健壮:

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

相关问题 更多 >

    热门问题