說我有一個名爲標籤的對象,我有三個類型的標籤通過以下方式實例變量指出,字符串與枚舉在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