gpt4 book ai didi

python - 如何重写 Enum 类以返回成员值而不是成员对象?

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:07 25 4
gpt4 key购买 nike

我有一个枚举类,用于公共(public)系统路径的快捷方式:

    _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__ em> 父类(super class)方法,但在不加修改地实现它们时出现错误。

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

我错过了什么?

最佳答案

您可以通过重载 __repr__ 来实现此目的方法如下:

def __repr__(self):
return self._value_

关于python - 如何重写 Enum 类以返回成员值而不是成员对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54697038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com