源碼片段:
class myThread(threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.counter = counter
執行時提示如下錯誤:
Traceback (most recent call last):
File "threading.py", line 2, in <module>
import threading
File "I:\MY_TEST\py\thread\threading.py", line 7, in <module>
class myThread(threading.Thread):
AttributeError: 'module' object has no attribute 'Thread'
1、檢查是否為threading和Thread拼寫錯誤,認真對比后確認無誤;
2、判斷是否為threading模塊沒有安裝,查詢發現python3.4自帶就有此模塊;
3、最后檢查腳本的名稱是threading.py,懷疑是與模塊名稱沖突,導致加載錯誤,將腳本名稱改為thread_ing.py后執行,正確。
由此引出兩個問題:
1、命名問題:不管是變量還是腳本名稱,都不要和python本身的模塊、關鍵字等重合;
2、Python加載模塊順序問題:
加載模塊搜索路徑被存儲在sys模塊中的path變量中,我們使用sys.path輸出:
第一個參數是‘’(空串),代表是當前目錄,后續的目錄分別為PYTHONPATH目錄和標准庫目錄,所以得到加載模塊的順序為:
1)當前主目錄
2)PYTHONPATH目錄
3)標准庫目錄