【发布时间】:2018-04-28 17:00:29
【问题描述】:
我在constants.py 中定义了这些常量
PERMISSION_USER_ADD = 'add_user'
PERMISSION_USER_VIEW = 'view_user'
PERMISSION_USER_EDIT = 'edit_user'
PERMISSION_TOOL_ADD = 'add_tool'
PERMISSION_TOOL_VIEW = 'view_tool'
PERMISSION_TOOL_EDIT = 'edit_tool'
但我不想在每次需要添加另一个时都输入这些完整的常量名称。
来自 Java 我可以做到这一点。
class Permission {
class User {
const ADD = 'add_user';
const VIEW = 'view_user';
const EDIT = 'edit_user';
}
class Tool {
const ADD = 'add_tool';
const VIEW = 'view_tool';
const EDIT = 'edit_tool';
}
}
但所有 python linters 都将其标记为糟糕的编码习惯,并且到目前为止,寻找 python 方法来做到这一点还没有取得成果。
所以我的问题是:以支持轻松重构的方式定义嵌套常量的 Python 方式是什么?
【问题讨论】:
-
一个简单的字典不会删掉它?
-
你还需要
Permission.User.ADD吗?我看不出你是如何节省时间的。如果您对此感到担心,请给常量起更短的名称或将您的编辑器配置为自动完成。 -
@palivek 字典可以工作,但我必须使用
['user']['add']来访问这些值。不确定这是否是最好的方法 -
@PatrickHaugh 如果我要添加新权限,我将不得不复制编辑/键入它,而使用嵌套我可以将它添加到一个地方。我也失去了很好地迭代权限的能力。再说一次,这可能只是我的偏见。