2010-09-03 73 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是可怕的,并且大多会是错误的。