【发布时间】:2017-05-27 22:24:28
【问题描述】:
我想创建一个命名空间,其成员由 IDE 建议,就像它适用于例如模块变量一样。
argparse.命名空间
This question 是关于如何通过argparse.Namespace 创建命名空间。
但是,我的 IDE (PyCharm 2016.1.3) 不支持这样的命名空间。假设如下:
module1.py
from argparse import Namespace
namespace = Namespace(var=1)
module2.py
from .module1 import namespace
# No suggestion for `var` by the IDE.
namespace.var
即使我明确地将var 分配给namespace,我也没有得到任何建议:
# In module1.py
namespace.var = 1
字典
什么是 dict 关键建议:
module1.py
namespace = dict(var=1)
module2.py
from .module1 import namespace
# Suggests dict key 'var'.
namespace['var']
但是我发现使用dicts 作为命名空间会使代码看起来不那么清晰。
带有名称前缀的模块变量
由于建议使用模块变量,我可以简单地为每个变量添加命名空间名称的前缀:namespace_var = 1。但是,我不能简单地 import 一个命名空间,因为所有变量都位于同一范围内。另外命名也不清楚,什么部分指命名空间,什么指变量名。
类
另一种选择是使用class:
module1.py
class namespace: var = 1
module2.py
from .module1 import namespace
# Suggests `var`.
namespace.var
但是,如果我希望我的命名空间是小写的,那么类定义不符合 PEP8 命名约定(IDE 会抱怨)。因此,我对这个解决方案也不满意。还有class Namespace: var = 1; namespace = Namespace感觉太做作了。
您是否有使用其他 IDE 的经验,或者您知道如何创建由 IDE(特别是 PyCharm)辅助的命名空间?
【问题讨论】:
标签: python namespaces pycharm