使用内置函数名称作为属性或方法标识符是坏习惯吗?
我知道绝对不能把内置函数的名字当作变量名来用。
但是,作为属性名或者方法名,使用它们有什么问题吗?
比如,写 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等)的语法高亮功能变得混乱。此外,一些代码检查工具也会对此发出警告。