2011-04-13 57 views
3

那是一個好辦法,這樣定義一個類:使用類,來保持預定義的字符串

class states: 
    INACTIVE = 'Inactive' 
    ACTIVE = 'Active' 
    PENDING = 'Pending' 
    BANNED = 'Banned' 

保持可能的值的列表,然後讓他們爲,例如states.INACTIVE,所以當我想改變用戶的狀態時,我做了這樣的事情:user.status=states.BANNED,它得到值'Banned'。我用它來快速訪問我的IDE中的智能感知這些值與ctrl空間,它也使它更安全的打字錯誤。雖然,我不確定創建一個只保留一些字符串的類是一個好方法。我怎樣才能組織一個更好的方式,或者這是一個好的解決方案?

回答

2

我認爲這個解決方案是可以的。但是,也許我將這些常量添加到用戶類:

class User: 
    STATUS_INACTIVE = 'Inactive' 
    STATUS_ACTIVE = 'Active' 
    STATUS_PENDING = 'Pending' 
    STATUS_BANNED = 'Banned' 

    def __init__(self): 
     self.status = User.STATUS_ACTIVE 
1

好像你想要的是一個enumeration。在你的代碼

# states.py 
INACTIVE = 'Inactive' 
ACTIVE = 'Active' 
PENDING = 'Pending' 
BANNED = 'Banned' 

然後import states

1

你可以在不同的states模塊還提供這些作爲模塊級的變量

# example.py 
import states 

# ... stuff happens to create user instance 
user.status = states.BANNED 

使用這種方法有沒有需要實例一個類只是爲了從中拉出變量。我不知道這是否是最有效的路線,但它非常方便。

1

我在多個地方使用此功能。並認爲它是完全正確的。

相關問題