我应该避免使用对象作为变量名吗?

时间:2013-01-22 18:57:50

标签: python-2.7

在我了解旧式课程和新式课程之间的区别之前,我没有意识到object被解释器用于任何事情。现在我知道要创建新式的课程,你必须做一些事情:

class Spam(object):
    pass

在我的旧代码中,我通常使用以下内容迭代对象列表:

for object in xml_objects:
    pass

我无法判断我是否在做一些危险的事情,我应该回去查找我这样做并创建新名字的任何案例。据我所知,我在for循环的范围内征服object,但它应该保留在外部。

我应该回去重写这些循环吗?如果是这样,是因为它是一个糟糕的形式,还是因为它可能导致真正的错误(或两者)?

1 个答案:

答案 0 :(得分:3)

只要你只在函数范围内编写这样的for循环,它很可能不会立即引起任何问题。在顶层,您可能会遇到问题。例如,

for object in [1, 2, 3]:
    pass

class foo(object):
    pass

给出了这个输出:

Traceback (most recent call last):
  File "foo.py", line 4, in <module>
    class foo(object):
TypeError: Error when calling the metaclass bases
    int() takes at most 2 arguments (3 given)

所以,当我有机会时,我会解决它。通常,避免隐藏现有名称是一种很好的形式,这样可以避免潜在的混淆以及潜在的运行时错误。在极少数情况下,您可能认为这是值得的,但在object的情况下,缩写名称如oobj是惯例。