如何在Python中仅导入类方法

10 投票
5 回答
33095 浏览
提问于 2025-04-17 08:21

我有一个叫 GP.py 的文件,然后我在这个文件里运行另一个叫 MyBot.py 的文件。

在 MyBot.py 文件里,我有这么一行代码:

from GP import *

我怀疑它把整个 GP.py 文件都导入进来了,而不是我想要的那些类的方法和类的描述。在 GP.py 文件里,除了定义的内容,还有其他的代码。

5 个回答

4

不建议从一个模块中全部导入内容。Python的哲学中有句话说:“明确比隐含要好。”

这样做可能会有一些副作用,比如覆盖掉已有的名称。你应该始终控制好命名空间。

你可以这样导入你的类和函数:

from GP import MyClass, my_function

另一种方法是直接导入整个模块。

import GP
GP.my_function()
GP.MyClass()

这样做可以为GP模块创建一个命名空间,避免覆盖掉其他东西。

希望这对你有帮助。

5

_single_leading_underscore:这是一个弱的“内部使用”标识符。例如,使用 from M import * 时,不会导入名称以下划线开头的对象。

可以使用这个:

from GP import SomeClass

如果你想使用 import *,可以看看 PEP-8(Python 编码规范)

那些设计为通过 from M import * 使用的模块,应该使用 __all__ 机制来防止导出全局变量。

22

你不能单独导入类的方法,必须导入整个类。你可以通过列出你想导入的类来做到这一点:

from GP import class1, class2, class3

需要注意的是,这样做仍然会加载整个模块。只要你从模块中导入任何东西,就会发生这种情况。如果你在这个模块中有一些代码不想在导入时执行,可以像这样保护它:

if __name__ == "__main__":
    # put code here

只有当模块被直接运行时,块中的代码才会被执行,而在导入时不会执行。

撰写回答