我在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的方法到目前为止还没有成果。
所以我的问题是:以支持轻松重构的方式定义嵌套常量的pythonic方法是什么?
答案 0 :(得分:1)
您可以使用argparse.Namespace
来访问成员,就像您的班级示例一样:
>>> permissions = Namespace(
... user=Namespace(add='add_user', etc),
... etc
... )
然后:
>>> permissions.user.add
'add_user'
答案 1 :(得分:0)
字典可能是最简单的方法。
class Permission(object):
user = {
'add': 'add_user',
'view': 'view_user',
'edit': 'edit_user',
}
tool = {
'add' : 'add_tool',
'view' : 'view_tool',
'edit' : 'edit_tool',
}
print(Permission.user['view'])
print(Permission.tool['view'])
输出:
view_user
view_tool