在談到這個問題:
python: Two modules and classes with the same name under different packagesPython的同一模塊名稱公約
應該在一個包中的所有模塊唯一命名的,不管嵌套? PEP8和PEP423似乎沒有解決這個問題。
在談到這個問題:
python: Two modules and classes with the same name under different packagesPython的同一模塊名稱公約
應該在一個包中的所有模塊唯一命名的,不管嵌套? PEP8和PEP423似乎沒有解決這個問題。
不,不要求不同級別的名稱必須不同。每個級別都是一個獨立的名稱空間。如果foo.utils
和foo.bar.utils
在您的項目中有意義,那麼就這樣做。
例如,Python標準庫有email.message
和email.mime.message
,並multiprocessing.connection
,以及multiprocessing.dummy.connection
,還有更多:
$ ls ~/Development/Library/cpython/Lib/**/*.py | grep -v __ | grep -v test_ | xargs basename | sort | uniq -c | grep -v ' 1 ' | sort
2 abc.py
2 ascii.py
2 client.py
2 connection.py
2 constants.py
2 dump.py
2 errors.py
2 filelist.py
2 handlers.py
2 log.py
2 message.py
2 parse.py
2 parser.py
2 process.py
2 queues.py
2 server.py
2 spawn.py
2 text.py
2 tree.py
3 main.py
4 config.py
5 support.py
6 util.py
這是出現包裝內,出現一次以上,排除測試的所有模塊,__init__.py
和__main__.py
。
由於軟件包基於文件系統,因此無法在正常情況下使用相同的軟件包,因爲文件/目錄沒有重複。
當然,您可以擁有相同的命名空間包。
也可以在不同路徑中具有相同的程序包/模塊名稱。他們按順序搜索,所以第一場勝利。