python class property does not evaluated in the if condition
<p>I have a python class as follow</p>

<pre><code>class Application(models.Model):
    name = models.CharField(help_text="Application's name",max_length=200)
    current_status = models.IntegerField(null=True, blank=True)
    class Meta:
        ordering = ["name"]

    @property
    def status(self):
        """Returns the current ApplicationStatus object of this Application."""
        try:
            return ApplicationStatus.objects.get(id = self.current_status)
        except ApplicationStatus.DoesNotExist as e:
            print e
            return None
</code></pre>

<p>In another class I check the property status as in the following statements</p>

<pre><code>    app = Application()
    if app.status is None:
        #do some thing
    else:
        print app.status
</code></pre>

<p>Although I am sure that the status of the application is not None, the else print statement print None and when I try to access the status like app.status.id, the application throws an exception <code>NoneType has no property id</code>.</p>

<p>When I changed the condition to:</p>

<pre><code>    app = Application()
    st = app.status
    if st is None:
        #do some thing
    else:
        #do another thing
</code></pre>

<p>it works fine.</p>

<p>Can someone tell my why the python properties does not evaluated in the print statement?</p>
