【问题标题】:Python's equivalence of using namespacePython 等价的 using namespace
【发布时间】:2015-09-11 04:49:55
【问题描述】:

我有以下 Helper.py python 脚本

class Helper:
# Helper has many many classes! (AA, BB, CC, DD, ....) not just 2!
    class AA:
        CMD_AA = '8'
        CMD_AB = '1'

    class BB:
        CMD_BA = '0'
        CMD_BB = '1'

我创建了这个帮助文件以使代码更具可读性。所以可以这样写;

# this usage is more readable and makes sense
cmd.a = AA.CMD_AB 
cmd.b = BB.CMD_BB 

# instead of some thing like this where no one knows
# what 1 is interms of a or b!!
cmd.a = 1
cmd.b = 1

帮助脚本被导入到许多 python 文件中!我知道如何使用它的唯一方法就是这样

from Helper import *
cmd.a = Helper.AA.CMD_AA  # instead of cmd.a = 8
cmd.b = Helper.BB.CMD_BB  # instead of cmd.b = 1

有没有办法摆脱“助手”。我已经添加了更多的输入。所以它看起来像;

from Helper import *

#in C++ u can use something like using namespace Helper;
cmd.a = AA.CMD_AA  # instead of cmd.a = 8
cmd.b = BB.CMD_BB  # instead of cmd.b = 1

【问题讨论】:

    标签: python import namespaces


    【解决方案1】:

    您应该删除包装器 Helper 类并删除文件的其余部分...如果您需要,文件本身会提供命名空间

    Helper.py

    class CMD_AA:
        ...
    

    main.py

    import Helper
    Helper.CMD_AA
    # or just
    from Helper import CMD_AA 
    

    【讨论】:

    • 确实,有了这个建议的更改,using namespace Helper 的等价物将是 from Helper import *。 (您之前尝试过,Sayo,但您有 两个 的东西命名为 Helper:模块文件和该文件中的类。)在 Python 中不鼓励导入 *,就像 using namespace 一样在 C++ 中。
    • 在这里感谢大家的帮助。 @RobKennedy,我绝对尝试过 **from Helper import * ** (如上面的问题所示),但不知道我不需要 Joran 指出的外部类名,这增加了额外的复杂性。
    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 2011-10-14
    • 2010-11-27
    • 2011-09-26
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多