2013-03-10 85 views
2

我是新來的python,並發現我可以導入一個模塊,而無需導入任何內部的類。我有以下結構 -在python中輸入模塊是什麼意思?

myLib/ 
    __init__.py 
    A.py 
    B.py 

driver.py 

裏面driver.py我這樣做 -

import myLib 
tmp = myLib.A() 

我收到以下錯誤試圖運行它。 AttributeError:'模塊'對象沒有屬性A

當我這樣做時,Eclipse並沒有抱怨,實際上當我輸入myLib.A時,自動完成會顯示A.

當我導入一個模塊而不是其中的任何類時,這並不意味着什麼?

感謝

P

+1

'myLib'不是'module',而是'package'。 'A'和'B'是模塊。 – 2013-03-10 19:22:03

回答

4

Python不是Java。 AB不是類。他們是模塊。您需要分別導入它們。 (而且myLib不是模塊,但一個包。)

模塊AB本身可能包含類,它們可能會或可能不會被調用AB。您可以根據需要在模塊中包含儘可能多的類 - 甚至完全不需要,因爲編寫大型的Python程序並不需要任何類。

要回答你的問題,導入myLib只需將名稱myLib放在你當前的命名空間中。 __init__.py中的任何內容都將被執行:如果該文件自己定義或導入任何名稱,則它們將作爲myLib的屬性提供。

如果你做from myLib import A,你現在已經將模塊A導入到當前命名空間中。但是,它的任何類仍然需要通過名稱A來引用:所以如果你有一個類A那裏,你可以通過A.A()實例化它。

第三種選擇是做from myLib.A import A,它確實將A導入到當前的命名空間中。在這種情況下,您可以致電A()實例化該類。

+0

啊。謝謝!確切地說我正在尋找的信息。 – R11 2013-03-10 20:52:31

1

你需要做的

from mylib import A 

因爲A是不是裏面mylib

__init__.py一個屬性當你做import mylib它進口__init__.py

查看我的回答。 About packages

相關問題