Thing is, what does it mean for a property to &quot;exist&quot; in a dynamic language like Python? E.g.<p><pre><code>  class P(object):
      def __getattr_(self, attrname):
          return &quot;hello&quot;

  &gt;&gt;&gt; p = P()
  &gt;&gt;&gt; print p.foo
  hello
</code></pre>
Does &quot;p&quot; have an attribute &quot;foo&quot;?