cuốn sách gpt4 ai đã làm

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

In lại Tác giả: Walker 123 更新时间:2023-11-28 21:52:56 32 4
mua khóa gpt4 Nike

做的时候:

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

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

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

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

câu trả lời hay nhất

gia hạn:

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

>>> 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']
>>>

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

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

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

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

32 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress