2013-01-22 47 views
2

在我了解到旧式班级和新式班级之间的区别之前,我并不知道object被解释程序用于任何事情。现在我知道,创造你必须做一些像新样式类:我应该避免使用对象作为变量名吗?

class Spam(object): 
    pass 

在我的旧代码,我通常通过对象的列表与重复的东西,如:

for object in xml_objects: 
    pass 

我不能告诉我是否正在做一些危险的事情,我应该回去找到任何我这样做并创建新名字的案例。据我所知,我在for循环的范围内命令object,但它应该保留在外部。

我应该回去重写这些循环吗?如果是这样,是因为这是一个糟糕的形式问题,还是因为它会导致实际的错误(或两者兼而有之)?

+1

相关:http://stackoverflow.com/q/10044321 –

回答

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等缩写名称。

相关问题