我运行python2.7.6。我在创建包时遇到问题。以下是MWE:
我有以下文件:
run.py
MyPackage/
__init__.py
Father_class.py
Son_class.py
class1.py
包括以下内容:
初始化.py
^{pr2}$在运行.py在
from MyPackage import Father_class, Son_class
父亲_类.py公司名称:
class Daddy(Object):
def __init__(self):
self.hello=1
儿子_类.py公司名称:
from MyPackage import *
# alternatively I tried: from MyPackage import class1, Father_class
class Sonny(Daddy):
def __init__(self):
super(Daddy, self).__init__()
self.bye=class1.MyClass1()
#alternatively I tried self.bye=MyClass1()
1.py类:
class MyClass1(Object):
def __init__(self):
self.life=1
跑步时运行.py我得到:
self.bye=class1.MyClass1()
NameError: global name 'class1' is not defined
你知道我做错了什么吗?在
OlegS.的答案可能是最好的方法,因为它避免了混乱
import *
。在仅供参考,
Son_class.py
中的from MyPackage import *
可能无法按预期工作,原因是您只能从__init__.py
中定义的MyPackage
对象导入如果您将
__init__.py
更改为你的例子应该按原样运作。在
另外,convention statespython模块名是小写的。在
除非导入的内容在},但它可以直接导入{}(处于同一级别):
site-packages
全局中或在virtualenv中可用,否则只能相对于导入的位置导入模块。因此,Package/a
中的模块a
无法通过导入package
并从中导航来导入b
中的模块{为了儿子_类.py使用:
否则,建议在导入中具体化并导入所需的定义:一旦需要重构任何东西,这将有很大的帮助。如果要显式地写下导入路径,您也会收到一条更合理的错误消息。在
相关问题 更多 >
编程相关推荐