2

在我了解旧式类和新式类之间的区别之前,我不知道object解释器用于任何事情。现在我知道要创建新样式的类,您必须执行以下操作:

class Spam(object):
    pass

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

for object in xml_objects:
    pass

我不知道我是否在做危险的事情,我应该回去寻找我这样做的任何案例并创建新名称。据我了解,我object从 for 循环的范围内征用,但它应该保留在外面。

我应该回去重写这些循环吗?如果是这样,是因为它的形式不好还是因为它会导致真正的错误(或两者兼而有之)?

4

1 回答 1

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,缩写名称如oorobj是习惯性的。

于 2013-01-22T20:02:33.807 回答