создать перечисление, используя значение другого имени свойства - PullRequest
3 голосов
/ 06 марта 2020

как я могу создать класс перечисления, чтобы его свойство использовало значение из другого члена? Как мой следующий код

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

Ответы [ 2 ]

5 голосов
/ 06 марта 2020

Просто используйте:

class ProjectPath(Enum):
    home = '~/home'
    app = f'{home}/app'
    prefix = f'{app}/prefix'
    postfix = f'{app}/postfix'
3 голосов
/ 06 марта 2020

Не пытайтесь ссылаться на переменные внутри как на перечисление, просто используйте их как локальные переменные.

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'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...