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

时间:2011-04-13 14:02:54

标签: python

这是定义这样一个类的好方法:

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

保留可能值的列表,然后将其作为例如states.INACTIVE,所以当我想更改用户的状态时,我会执行以下操作:user.status=states.BANNED并获得值'Banned'。我使用它来使用ctrl-space在我的IDE中使用IntelliSense快速访问这些值,这也使得它更容易对付拼写错误。虽然,我不确定这是一个很好的方法来创建一个只保留一些字符串的类。如何以更好的方式组织它或者这是一个好的解决方案?

4 个答案:

答案 0 :(得分:2)

我认为这个解决方案没问题。但也许我会将这些常量添加到用户类:

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

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

答案 1 :(得分:1)

看起来你想要的是enumeration

答案 2 :(得分:1)

您还可以在不同的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

使用这种方法,不需要实例化一个类来从中提取变量。我不知道这是否是最有效的路线,但它非常方便。

答案 3 :(得分:1)

我在很多地方使用它。并认为这是完全可以的。