关于python:使用类来保留预定义的字符串

Using classes to keep predefined strings

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

1
2
3
4
5
class states:
    INACTIVE = 'Inactive'
    ACTIVE = 'Active'
    PENDING = 'Pending'
    BANNED = 'Banned'

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


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

1
2
3
4
5
6
7
8
class User:
    STATUS_INACTIVE = 'Inactive'
    STATUS_ACTIVE = 'Active'
    STATUS_PENDING = 'Pending'
    STATUS_BANNED = 'Banned'

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

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


您还可以在不同的states模块中将这些变量作为模块级变量提供:

1
2
3
4
5
# states.py
INACTIVE = 'Inactive'
ACTIVE = 'Active'
PENDING = 'Pending'
BANNED = 'Banned'

然后在你的代码中import states

1
2
3
4
5
# example.py
import states

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

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


看起来你想要的是一个枚举。