使用内置函数名称作为属性或方法标识符是坏习惯吗?

54 投票
4 回答
19249 浏览
提问于 2025-04-17 12:10

我知道绝对不能把内置函数的名字当作变量名来用。

但是,作为属性名或者方法名,使用它们有什么问题吗?

比如,写 my_object.id = 5 这样是否安全,或者在我自己的类里定义一个叫 dict 的实例方法可以吗?

4 个回答

12

不,这没问题。因为需要一个对象的引用,所以没有办法让它们覆盖内置的功能。

21

是的,这样做是不好的习惯。虽然一开始可能不会出什么大问题,但会让代码变得难以阅读。

引用一下PEP20中的一些要点:

美观胜于丑陋。
简单胜于复杂。
可读性很重要。
如果实现起来很难解释,那就是个坏主意。

看到调用 myobject.dict(),人们自然会认为它会返回 myobject.__dict__,或者 myobject.id() 返回的和 id(myobject) 是一样的。

他们可能会发现自己错了;但这需要时间和精力,可能还会在这个过程中犯一些错误。把属性命名为 myobject.object_id_number 虽然长一些,但能更清楚地表明它和 id(myobject) 是不同的。

44

这样做不会让解释器感到困惑,但可能会让看你代码的人感到困惑。尽量避免不必要地使用内置名称作为属性和方法的名字。

另一个坏处是,使用内置名称会让大多数支持Python的编辑器(比如vi、emacs、pydev、idle等)的语法高亮功能变得混乱。此外,一些代码检查工具也会对此发出警告。

撰写回答