2010-09-03 110 views
4

我在Python中製作遊戲,並且有一個名爲'map'的模塊是有意義的。我的首選進口方式是這樣做的:模塊名稱重新定義內置

from mygame import map 

但是,由於pylint告訴我,這是重新定義一個內置的。處理這個問題的常用方法是什麼?以下是我可以選擇的選項:

1)忽略pylint警告,因爲我不使用內置映射。

2)變更爲:

import mygame 

然後引用作爲mygame.map在我的代碼。

3)重命名我的地圖模塊到別的東西(hexmap,gamemap等)

我傾向於(2),但我想看看別人怎麼想。

回答

3

這是主觀的;沒有正確的答案。

這就是說,對我來說3是唯一明智的選擇。真的真的不要做1;覆蓋builtins幾乎不是一個好主意,在這種情況下,它是特別混亂。 2更好,但我認爲仍有一個期望,即所謂的map函數執行一些與內建函數類似的操作。

也許mapping

+0

我認爲映射會被局外人看作是一種數據結構,如字典而不是遊戲映射 – 2010-09-03 21:02:55

+0

這是模塊的名稱,而不是函數。它包含十六進制瓷磚地圖,單個六角形瓷磚,輔助功能等的類。 – Colin 2010-09-03 21:03:18

+1

@Colin:對不起,已編輯。爲什麼不'地圖'? @Rafe:那是真的;在這種情況下,我認爲上下文就足夠了。 – katrielalex 2010-09-03 21:04:00

1

選項2或3將工作,但我認爲這是最容易理解的重命名map,以便它不會混淆。這樣,你可以得到簡潔的指map而不是mygame.map給你,但你不會有任何問題的範圍。另外,我認爲map是一個不太具有說服力的變量名,所以最好給它一個更具體的名稱。

2

答曰PEP 20

明確優於隱式。
面對歧義,拒絕猜測的誘惑。
應該有一個 - 最好只有一個 - 明顯的方法來做到這一點。

mygame.mapmap更明確。 mygame.boardmygame.terrainmygame.map含糊不清。猜測代碼是否在談論__builtins__.mapmygame.map是可怕的,並且大多會是錯誤的。

相關問題