我正在尝试创建一个具有整数值的枚举,但它也可以为每个值返回一个显示友好的字符串.我想我可以只定义一个dict映射值到字符串,然后实现__str__和一个带有字符串参数的静态构造函数,但是有一个问题...
(在不同的情况下,我可以让这个Enum的基础数据类型为字符串而不是整数,但这被用作枚举数据库表的映射,因此整数值和字符串都是有意义的,前者作为主键.)
from enum import Enum
class Fingers(Enum):
THUMB = 1
INDEX = 2
MIDDLE = 3
RING = 4
PINKY = 5
_display_strings = {
THUMB: "thumb",
INDEX: "index",
MIDDLE: "middle",
RING: "ring",
PINKY: "pinky"
}
def __str__(self):
return self._display_strings[self.value]
@classmethod
def from_string(cls, str1):
for val, str2 in cls._display_strings.items():
if str1 == str2:
return cls(val)
raise ValueError(cls.__name__ + ' has no value matching "' + str1 + '"')
Run Code Online (Sandbox Code Playgroud)
转换为字符串时,我收到以下错误:
>>> str(Fingers.RING)
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud) 我有一个变量type,我想使用内置type()函数
例
def fun(inv):
log.debug('type of inv {}'.format(type(inv)))
type = 'int'
Run Code Online (Sandbox Code Playgroud)
运行该函数时出现以下错误:
AttributeError: 'module' object has no attribute 'type'
Run Code Online (Sandbox Code Playgroud) 我需要检查一个字符串是否包含一组字符,并且它们需要显示正确的次数.
string1 = "somestring"
string2 = "thestrings"
characters = "egimnorsst" # Note that there are two 's' characters here
does_string_contain(string1, characters) # True
does_string_contain(string2, characters) # False
Run Code Online (Sandbox Code Playgroud)