【问题标题】:create enum using other property name's value使用其他属性名称的值创建枚举
【发布时间】:2020-03-06 14:19:32
【问题描述】:

如何创建枚举类,使其属性使用其他成员的值?喜欢我下面的代码

from enum import Enum
class ProjectPath(Enum):
    home = '~/home'
    app = '~/home/app'
    prefix = '~/home/app/prefix'
    postfix = '~/home/app/postfix'

'''
try to do something like
from enum import Enum
class ProjectPath(Enum):
    home = '~/home'
    app = f'{self.home.value}/app'
    prefix = f'{self.app.value}/prefix'
    postfix = f'{self.app.value}/postfix'
'''

【问题讨论】:

  • 只要去掉 self 部分,变量 home 就定义好了。没有称为 self 的变量。所以删除所有对 self 的引用

标签: python python-3.x enums python-3.7


【解决方案1】:

只需使用:

class ProjectPath(Enum):
    home = '~/home'
    app = f'{home}/app'
    prefix = f'{app}/prefix'
    postfix = f'{app}/postfix'

【讨论】:

    【解决方案2】:

    不要试图将里面的变量称为枚举,只需像局部变量一样使用它们。

    from enum import Enum
    
    
    class ProjectPath(Enum):
        home = '~/home'
        app = f'{home}/app'
        prefix = f'{app}/prefix'
        postfix = f'{app}/postfix'
    
    
    print(*[f"{var=}" for var in ProjectPath], sep="\n")
    

    输出

    var=<ProjectPath.home: '~/home'>
    var=<ProjectPath.app: '~/home/app'>
    var=<ProjectPath.prefix: '~/home/app/prefix'>
    var=<ProjectPath.postfix: '~/home/app/postfix'>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      相关资源
      最近更新 更多