2024-09-27 07:26:28 发布
网友
进行以下操作时:
import types ns = types.SimpleNamespace(alfa = 1, bravo = 2, charlie = 3) print(dir(ns))
结果列表还包含所有类方法,因此:
如何只获取用户定义属性的列表,从而['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来过滤结果:
谢天谢地,所有特殊的方法/属性都以__开头和结尾,因此它们很容易被过滤掉。在
__
如果希望只允许以__开头的名称,那么可以使if子句更加健壮:
if
[x for x in dir(ns) if not (x.startswith('__') and x.endswith('__'))]
更新:
我只记得你能做到:
这要简单得多。在
只需使用list comprehension来过滤结果:
^{pr2}$谢天谢地,所有特殊的方法/属性都以
__
开头和结尾,因此它们很容易被过滤掉。在如果希望只允许以
__
开头的名称,那么可以使if
子句更加健壮:相关问题 更多 >
编程相关推荐