У меня есть класс enum для ярлыков общих системных путей:
_HOME = str(Path().home())
class Shortcuts(Enum):
RECENTS = _HOME + '/Recents'
DESKTOP = _HOME + '/Desktop'
DOCUMENTS = _HOME + '/Documents'
DOWNLOADS = _HOME + '/Downloads'
APPLICATIONS = '/Applications'
LIBRARY = '/Library'
SYSTEM = '/System'
USERS = '/Users'
TRASH = _HOME + '/.Trash'
Я хочу иметь возможность доступа к элементам, к которым возвращается их значение вместо объекта-члена.
print(Shortcuts.RECENTS)
> '/Users/username/Recents'
Я пытался переопределить __ getitem __ , __ getattr ___ и __ getattribute __ методы суперкласса, но я получаю ошибки только при их реализации без изменений.
def __getattribute__(self, item): #type error: str obj not callable
return item
def __getattribute__(self, item): #type error: str obj not callable
return item.value
def __getitem__(self, item): #returns same object if item.value, item.name, ..etc
return item
Чего мне не хватает?