2013-01-22 44 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等縮寫名稱。

相關問題