小编Bin*_*gga的帖子

Python 枚举元数据使打字模块崩溃

我一直在思考这个问题,我似乎无法找到解决问题的方法。我使用枚举来管理我在 Flask 服务器中的访问。短篇小说如果查询不存在的枚举值,我需要枚举返回默认值。首先,我为枚举创建了一个元类:

class AuthAccessMeta(enum.EnumMeta):
def __getattr__(self, item):
    try:
        return super().__getattr__(item)
    except Exception as _:
        if self == AuthAccess and item not in ['_subs_tree']:
            Loggers.SYS.warn('Access {} doesn\'t exist, substituting with MISSING.'.format(item))
            return AuthAccess.MISSING
@unique
class AuthAccess(str, AutoName, metaclass=AuthAccessMeta):
    ...
Run Code Online (Sandbox Code Playgroud)

您可以看到我排除了 _subs_tree 属性,因为 EnumMeta 或 Enum 都没有。我发现这个方法的唯一地方是在打字模块中。然后我在其他地方用 AuthAccess 输入一个参数,它给了我这个奇怪的错误:

C:\Users\[USER]\AppData\Local\Programs\Python\Python36\python.exe -m src.main
[SYS][INFO][11:18:54]: Instance 76cb0042196d4a75b3794ce0b9c1590c is running on project 'local/project1'
Traceback (most recent call last):
  File "C:\Users\[USER]\AppData\Local\Programs\Python\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\[USER]\AppData\Local\Programs\Python\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals) …
Run Code Online (Sandbox Code Playgroud)

python enums typing

8
推荐指数
1
解决办法
150
查看次数

标签 统计

enums ×1

python ×1

typing ×1