Python 模块名称重新定义内置的
我正在用Python制作一个游戏,将我的一个模块命名为“map”是有意义的。我首选的导入方式是:Python 模块名称重新定义内置的,python,coding-style,naming-conventions,conventions,Python,Coding Style,Naming Conventions,Conventions,我正在用Python制作一个游戏,将我的一个模块命名为“map”是有意义的。我首选的导入方式是: from mygame import map 然而,正如派林告诉我的那样,这是对内置函数的重新定义。处理这个问题的一般方法是什么?以下是我可以做出的选择: 1) 忽略pylint警告,因为我不使用内置映射 2) 改为: import mygame 然后在我的代码中引用mygame.map 3) 将我的地图模块重命名为其他模块(hexmap、gamemap等) 我倾向于(2),但我想看看别人怎么想
from mygame import map
然而,正如派林告诉我的那样,这是对内置函数的重新定义。处理这个问题的一般方法是什么?以下是我可以做出的选择:
1) 忽略pylint警告,因为我不使用内置映射
2) 改为:
import mygame
然后在我的代码中引用mygame.map
3) 将我的地图模块重命名为其他模块(hexmap、gamemap等)
我倾向于(2),但我想看看别人怎么想。这是主观的;没有正确的答案 也就是说,对我来说,3是唯一明智的选择。真的真的不做1;覆盖内置几乎从来都不是一个好主意,在这种情况下,它尤其令人困惑。2更好,但我认为仍然有一种期望,即任何名为
map
的函数都会执行与内置函数类似的操作
也许
映射
?选项2或3可行,但我认为重命名映射
最容易理解,这样就不会混淆了。这样,您就可以获得引用map
而不是mygame.map
所提供的简洁性,但在范围方面不会有任何问题。另外,我认为map是一个不太规范的变量名,所以最好给它一个更具体的名称。quot:
显式优于隐式。面对歧义,拒绝猜测的诱惑。
应该有一个——最好只有一个——显而易见的方法来做到这一点
mygame.map
比map
更明确mygame.board
或mygame.terrain
比mygame.map
更清晰。猜测代码是否在谈论\uuu内置的.map
或mygame.map
是可怕的,而且大多数情况下都是错误的。我认为mapping
会被局外人视为与字典之类的数据结构有关,而不是一个游戏地图,它是一个模块的名称,而不是一个函数。它包含用于十六进制平铺贴图、单个十六进制平铺、辅助函数等的类@Colin:抱歉,已编辑。为什么不映射
@雷夫:没错;我认为在这种情况下,背景已经足够了。