python - Python 的 "import X"和 "from module import X"之间的区别?

标签 python google-app-engine

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/

相关文章:

java - 从 swagger API 生成 java google 端点服务器 stub

java - 在Google App Engine中使用多个id参数进行查询

python - 无法正确索引 NUMPY 数组的列表

python - 如何在散点图中按所需顺序对 y 轴进行排序?

google-app-engine - 动态添加字段到 WTForms 返回 UnboundField

java - 将数据流式传输到谷歌应用程序引擎中的bigquery - java

python - Google App Engine 模板循环遍历两个变量

python - 喀拉斯 : Implementing a custom metric with logical operators

python - 查找列表是否包含特定的 numpy 数组

带标签的 Python Tkinter TTK 分隔符