说我有一个名为标签的对象,我有三个类型的标签通过以下方式实例变量指出,字符串与枚举在Python中
class Tag(object):
def __init__(self, name, type):
self.name = name
self.type = type
t1 = Tag("blue", "cold")
t2 = Tag("red", "warm")
t3 = Tag("black", "hot")
比方说,我只允许三种类型:冷,热和热。最好去检查它是否是这种类型之一?
if t1.type == "cold":
# do something
elif t1.type == "warm":
# do something else
else t1.type == "hot":
# do something even elser
或者我应该创建一个枚举类的物体,像从这个question之一,
class Type:
COLD=1
WARM=2
HOT=3
,而是创建这样的标签?
t1 = Tag("blue", Type.COLD)
我之所以问这个问题,是因为我听到了很多的处理能力,进入比较字符串,即使这些短短的3,4信长的话,很可能我会做几数以千计的这些类型的比较。你认为它值得去创建枚举对象来确定一个对象的类型,就像我在上面显示的例子那样?还是有更好的方法来做我想做的事情?
我认为您列举的解决方案的一个优点是它明确了允许的值是什么。如果你接受任意字符串,我会认为'更容易犯错误,更难记录你的词汇。例如,'logging'模块使用这种解决方案来记录日志级别(例如'logging.DEBUG','logging.INFO'等等)。 – larsks