如何在Python中仅导入类方法
我有一个叫 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
只有当模块被直接运行时,块中的代码才会被执行,而在导入时不会执行。