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