Why does a python descriptor __get__ method accept the owner class as an arg?
<p>Why does the <code>__get__</code> method in a <a href="http://docs.python.org/reference/datamodel.html#implementing-descriptors">python descriptor</a> accept the owner class as it's third argument? Can you give an example of it's use?</p>

<p>The first argument (<code>self</code>) is self evident, the second (<code>instances</code>) makes sense in the context of the typically shown descriptor pattern (ex to follow), but I've never really seen the third (<code>owner</code>) used. Can someone explain what the use case is for it?</p>

<p>Just by way of reference and facilitating answers this is the typical use of descriptors I've seen:</p>

<pre><code>class Container(object):
    class ExampleDescriptor(object):
        def __get__(self, instance, owner):
            return instance._name 
        def __set__(self, instance, value):
            instance._name = value
    managed_attr = ExampleDescriptor()
</code></pre>

<p>Given that <code>instance.__class__</code> is available all I can think of is that explicitly passing the class has something to do with directly accessing the descriptor from the class instead of an instances (ex <code>Container.managed_attr</code>). Even so I'm not clear on what one would do in <code>__get__</code> in this situation.</p>
