在我了解旧式课程和新式课程之间的区别之前,我没有意识到object
被解释器用于任何事情。现在我知道要创建新式的课程,你必须做一些事情:
class Spam(object):
pass
在我的旧代码中,我通常使用以下内容迭代对象列表:
for object in xml_objects:
pass
我无法判断我是否在做一些危险的事情,我应该回去查找我这样做并创建新名字的任何案例。据我所知,我在for循环的范围内征服object
,但它应该保留在外部。
我应该回去重写这些循环吗?如果是这样,是因为它是一个糟糕的形式,还是因为它可能导致真正的错误(或两者)?
答案 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
的情况下,缩写名称如o
或obj
是惯例。