我正在用Python制作一个游戏,让我的一个模块名为'map'是有意义的。我首选的导入方式是:
from mygame import map
然而,正如pylint告诉我的那样,这正在重新定义内置。处理这个问题的常用方法是什么?以下是我可以提出的选择:
1)忽略pylint警告,因为我还是不使用内置地图。
2)改为:
import mygame
然后在我的代码中引用mygame.map。
3)将我的地图模块重命名为其他内容(hexmap,gamemap等)
我倾向于(2)但我想看看其他人的想法。
答案 0 :(得分:3)
这是主观的;没有正确答案。
那就是说,对我来说3是唯一明智的选择。真的真的不做1;覆盖内置函数几乎从来都不是一个好主意,在这种情况下,它尤其令人困惑。 2更好,但我认为仍然期望任何名为map
的函数执行类似于内置函数的操作。
也许mapping
?
答案 1 :(得分:2)
Quoth PEP 20:
明确比隐含更好 面对模棱两可,拒绝猜测的诱惑 应该有一个 - 最好只有一个 - 明显的方法来做到这一点。
mygame.map
比map
更明确。 mygame.board
或mygame.terrain
不如mygame.map
含糊不清。猜测代码是在谈论__builtins__.map
还是mygame.map
是可怕的,而且大多数都是错误的。
答案 2 :(得分:1)
选项2或3可行,但我认为重命名map
以使其不会混淆是最容易理解的。这样,您可以获得引用map
而非mygame.map
的简洁性,但您不会对范围产生任何问题。另外,我认为map是一个有点不受欢迎的变量名,因此最好给它一个更具体的名称。