我有一个ResourceType继承自namedtupleand的枚举Enum,并且我不会在任何地方重写__str__or __repr__。当我格式化该枚举的实例时,我意外地得到了未修饰的值,而不是repr()或str(). 这怎么可能?被称为什么?
枚举详细信息(简化):
from enum import Enum, auto
from collections import namedtuple
class ResourceType(namedtuple('ResourceType', 'value ext required'), Enum):
RGB = auto(), '.png', True
Run Code Online (Sandbox Code Playgroud)
输出:
>>> repr(ResourceType.RGB)
"<ResourceType.RGB: ResourceType(value=<enum.auto object at 0x7f44b7d48d30>, ext='.png', required=True)>"
>>> str(ResourceType.RGB)
'ResourceType.RGB'
>>> f"{ResourceType.RGB}"
"ResourceType(value=<enum.auto object at 0x7f44b7d48d30>, ext='.png', required=True)"
Run Code Online (Sandbox Code Playgroud)
最后一个值既不是 therepr()也不是 the str(),所以即使namedtuple提供该字符串,为什么它不也提供 str/repr ?