2013-07-25 24 views
1

有時我創建的對象具有x屬性定義,有時我不知道。如何可靠地檢查是否爲某個對象定義了屬性?

class Object(models.Model): 
    x = models.IntegerField(blank=True, null=True) 

我要創造我的對象進行x沒有在我的應用程序在一個點上定義的一個子集:

[o for o in os if not hasattr(o,'x')] 

我已經被打的外殼四周,我不t得到我想要的結果。

>>> o = Object() 
>>> o.save() 
>>> o.id 
1L 
>>> hasattr(o,'x') 
True 

檢查x == None是否足夠?

回答

5

是的,檢查x is None就足夠了。

任何Object的實例將始終具有x的屬性,無論您是否設置它 - 如果未設置它,它將僅爲None

+2

它應該使用'''x is None''來完成,參見(PEP 8)[http://www.python.org/dev/peps/pep-0008/#id37] – bmihelac

+0

謝謝@Tom Medley。 –

相關問題