ksr*_*ini 6 python import python-module
我有一个似乎相当基本的问题,但我似乎无法在任何地方找到任何帮助.
file_a.py >>
from xyz import XYZ
class A:
.
.
.
file_b.py >>
import file_a
from file_a import A
class B(A):
def __init__(self):
A.__init__(self)
def someMethod(self):
XYZ.doSomething()
Run Code Online (Sandbox Code Playgroud)
XYZ.doSomething()无法说出NameError:名称'XYZ'未定义即使从file_a完成的标准导入(如'import sys')似乎也无法使其在file_b中可用.我认为应该工作.我的理解错了吗?如果是,那么有没有办法在文件中包含常见的导入和全局变量?(如果它有帮助,我一直是C++和java程序员,现在我开始使用python.)
我的理解错了吗?
是的,因为该行from file_a import A只将类A导入到命名空间中file_b.命名空间file_a是独立的.如果它不是这样的话,那么两种语法都没有意义:
import modulename
from modulename import something
Run Code Online (Sandbox Code Playgroud)
好像你的想法是正确的,然后在第二个表格之后你总是可以使用modulename.someotherthing.
如果是,那么有没有办法在文件中包含常见的导入和全局变量?
是的,有明星*运营商:
from modulename import *
Run Code Online (Sandbox Code Playgroud)
但这带来了命名空间污染的问题,例如from file_a import *也会导入file_b所有进口的file_a.你最终将失去对你的进口的控制权,这会在某个时候咬你...相信我!
当由于某种原因from module import *需要时,命名空间污染的变通方法是在变量中定义,module该变量__all__将使用星形运算符导入的内容列入白名单.
HTH!