模块名称重新定义内置

时间:2010-09-03 20:55:15

标签: python coding-style naming-conventions conventions

我正在用Python制作一个游戏,让我的一个模块名为'map'是有意义的。我首选的导入方式是:

from mygame import map

然而,正如pylint告诉我的那样,这正在重新定义内置。处理这个问题的常用方法是什么?以下是我可以提出的选择:

1)忽略pylint警告,因为我还是不使用内置地图。

2)改为:

import mygame

然后在我的代码中引用mygame.map。

3)将我的地图模块重命名为其他内容(hexmap,gamemap等)

我倾向于(2)但我想看看其他人的想法。

3 个答案:

答案 0 :(得分:3)

这是主观的;没有正确答案。

那就是说,对我来说3是唯一明智的选择。真的真的不做1;覆盖内置函数几乎从来都不是一个好主意,在这种情况下,它尤其令人困惑。 2更好,但我认为仍然期望任何名为map的函数执行类似于内置函数的操作。

也许mapping

答案 1 :(得分:2)

Quoth PEP 20

  

明确比隐含更好   面对模棱两可,拒绝猜测的诱惑   应该有一个 - 最好只有一个 - 明显的方法来做到这一点。

mygame.mapmap更明确。 mygame.boardmygame.terrain不如mygame.map含糊不清。猜测代码是在谈论__builtins__.map还是mygame.map是可怕的,而且大多数都是错误的。

答案 2 :(得分:1)

选项2或3可行,但我认为重命名map以使其不会混淆是最容易理解的。这样,您可以获得引用map而非mygame.map的简洁性,但您不会对范围产生任何问题。另外,我认为map是一个有点不受欢迎的变量名,因此最好给它一个更具体的名称。