我有一个用于通用系统路径快捷方式的枚举类:
_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
我想念什么?
答案 0 :(得分:0)
您可以通过像这样重载__repr__
方法来实现此目的:
def __repr__(self):
return self._value_