使用类保留预定义的字符串

问题描述

| 这是定义这样的类的好方法
class states:
    INACTIVE = \'Inactive\'
    ACTIVE = \'Active\'
    PENDING = \'Pending\'
    BANNED = \'Banned\'
保留可能值的列表,然后以例如
states.INACTIVE
,所以当我想更改用户的状态时,我会执行以下操作:
user.status=states.BANNED
,它的值是
\'Banned\'
。我使用它在ctrl-space的IDE中使用IntelliSense快速访问这些值,并且还可以更有效地防止输入错误。但是,我不确定创建只保留一些字符串的类的好方法。如何组织更好的方法,或者这是一个好的解决方案?     

解决方法

我认为这种解决方案是可以的。但是也许我可以将这些常量添加到用户类中:
class User:
    STATUS_INACTIVE = \'Inactive\'
    STATUS_ACTIVE = \'Active\'
    STATUS_PENDING = \'Pending\'
    STATUS_BANNED = \'Banned\'

    def __init__(self):
        self.status = User.STATUS_ACTIVE
    ,似乎您想要的是一个枚举。     ,我在很多地方都使用这个。并认为这完全可以。     ,您还可以在不同的
states
模块中将它们作为模块级变量提供:
# states.py
INACTIVE = \'Inactive\'
ACTIVE = \'Active\'
PENDING = \'Pending\'
BANNED = \'Banned\'
然后在您的代码中
import states
# example.py
import states

# ... stuff happens to create user instance
user.status = states.BANNED
使用此方法,无需实例化一个类,仅从其中提取变量即可。我不知道这是否是最有效的路线,但很方便。