Hi,

I have a question about a choice of implementation concerning
'superobject' with the descriptors.

When a 'superobject' looks for a given attribute, it runs through the
mro of the object.
If it finds a descriptor, the 'superobject' calls the __get__ method
with 'starttype = su->obj_type' as third argument (in typeobject.c:
super_getattro).

So, the 'type' argument of __get__ does not give more information
about the 'real calling type' in this case.
It seems that this is just a redundant information of inst.__class__.

For example:

    # A.descr is a descriptor
    # B inherit from A
    # C inherit from B

        c = C()
        c.descr
        super(C, c).descr
        super(B, c).descr

In these 3 cases the __get__ method is called with the same arguments
that are : __get__(descr, c, C).

If this behavior is really expected: Could you explain why ? because
it means that I am missing something obvious.
Because, at first sight, the 'type' argument seems to be the perfect
place to get the type of the 'real calling class'.

Thank you,

-- 
hakril
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to