hea*_*low 5 python enums jinja2
我正在尝试根据属性过滤列表。如果我使用该属性作为字符串,一切正常:
{% set ys = xs | selectattr("type", "equalto", "first") | list %}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用变量(在我的例子中是枚举的属性),我会得到一个空列表
{% set ys = xs | selectattr("type", "equalto", MyEnum.FIRST) | list %}
Run Code Online (Sandbox Code Playgroud)
该变量MyEnum.FIRST包含字符串“first”。
您正确地传递了一个变量,但如果您现在得到一个空列表,则MyEnum.FIRST不会生成 string 'first'。
如果MyEnum是enum.Enum子类,那么属性将是该类的实例。使用该.value属性获取实际的字符串值:
{% set ys = xs | selectattr("type", "equalto", MyEnum.FIRST.value) | list %}
Run Code Online (Sandbox Code Playgroud)
快速演示,展示枚举的工作原理以及为什么需要该属性:
>>> import enum
>>> class MyEnum(enum.Enum):
... FIRST = 'first'
... SECOND = 'second'
...
>>> MyEnum.FIRST
<MyEnum.FIRST: 'first'>
>>> MyEnum.FIRST.value
'first'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8697 次 |
| 最近记录: |