如何解释“来自A.B import *”?

时间:2012-10-05 14:54:54

标签: python

我遇到了一段代码,如:

  from object_recognition_msgs.msg import *

在我看来,但我发现object_recognition_msgs(这是一个目录)中没有msg.py, 但是,object_recognition_msgs中有一个名为“msg”的目录,目录的结构是

  object_recognition_msgs
  ├── msg
      ├── __init__.py
      ├── _ObjectId.py
      ├── _ObjectInformation.py
      ├── _ObjectRecognitionActionFeedback.py
      ├── _ObjectRecognitionActionGoal.py
      ├── _ObjectRecognitionAction.py
      ├── _ObjectRecognitionActionResult.py
      ├── _ObjectRecognitionFeedback.py
      ├── _ObjectRecognitionGoal.py
      ├── _ObjectRecognitionResult.py
      ├── _RecognizedObjectArray.py
      ├── _RecognizedObject.py
      ├── _TableArray.py
      └── _Table.py

我将“from object_recognition_msgs.msg import *”解释为导入object_recognition_msgs / msg中的所有python文件,这种解释是否正确?

提前致谢。

2 个答案:

答案 0 :(得分:4)

该语句将导入包中__init__.py模块的所有名称,而不是包含的文件。

您必须明确导入__init__.py文件中包中的每个模块,以便*导入包中所有模块中的所有内容。

答案 1 :(得分:1)

由于msg是一个目录,因此import语句将执行文件msg/__init__.py并导入该文件中定义的所有非私有名称。它不会导入任何其他文件,除非msg/__init__.py自己导入它们。