Google App Engine 刚刚给了我一个我不明白的错误。给定一个包含文件“Car.py”的模块“X”,其中包含一个类“Car”,
给定这段代码:
import X
class Passenger(db.Model):
car = db.ReferenceProperty(X.Car.Car)
我得到错误:
AttributeError: 'module' object has no attribute 'Car'
但是如果我把它改成:
from X import Car
class Passenger(db.Model):
car = db.ReferenceProperty(Car.Car)
它有效。它们在我看来是一样的,但显然不是。有什么区别?
最佳答案
正如 Lattyware 指出的那样,X
是一个包,而这正是包的工作方式。导入外层不会自动让您访问其中的模块。如果您想将整个事物称为 X.Car.Car
,您可以执行 import X.Car
。
(另请注意 Python 不是 Java:没有理由将每个类放在单独的文件中,即使您这样做,模块和包的名称通常也是小写的。)
关于python - Python 的 "import X"和 "from module import X"之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401063/