使用内置函数名作为属性或方法标识符是不好的做法吗?

max*_*max 40 python namespaces naming-conventions reserved-words python-3.x

我知道永远不要使用内置函数名作为变量标识符.

但有没有理由不将它们用作属性或方法标识符?

例如,在我自己的类中编写my_object.id = 5或定义实例方法是否安全dict

Ray*_*ger 36

它不会混淆口译员,但它可能会使阅读代码的人感到困惑.应避免在属性和方法中不必要地使用内置名称.

另一个不良影响是,在大多数支持python的编辑器(vi,emacs,pydev,idle等)中,阴影内置混淆语法高亮显示器.此外,一些lint工具会警告这种做法.


Jam*_*ley 16

是的,这是不好的做法.它可能不会立即为您破坏任何东西,但它仍然会损害代码的可读性.

有选择地引用PEP20:

美丽胜过丑陋.
简单比复杂更好.
可读性很重要.
如果实施很难解释,这是一个坏主意.

看到myobject.dict()对它的调用很自然地会假设它会返回myobject.__dict__,或者myobject.id()返回相同的东西id(myobject)

他们有可能发现他们错了; 但这需要时间和精力,并可能在他们弄明白时导致一些错误.调用你的属性的myobject.object_id_number时间要长得多,但要更清楚它与它的不同id(myobject)


Ign*_*ams 13

不,那没关系.由于需要对象引用,因此无法使它们影响内置对象.

  • 你不应该用`__`来启动它们.`__foo`得到了损坏,如果它是私人财产,这不是问题.`__foo__`表示它是Python内部.这样做没有*问题*,但形式不好. (5认同)
  • 取决于你所说的“很好”是什么意思。代码还会运行吗?当然。使用内置名称是一种不好的做法并且会导致混淆吗?是的,这足以成为任何人避免使用内置类型/函数作为变量名的理由。 (2认同)