[Python-Dev] assymetry in descriptor behavior

David Abrahams dave@boost-consulting.com
Mon, 24 Feb 2003 08:21:59 -0500


Guido van Rossum <guido@python.org> writes:

>> However, I think it might also cost an extra property object per
>> wrapped class, unless I can find a way to get the class and its
>> instance to share the property.  Hmm, feels a bit hack-ish to me now
>> that you mention it.  Maybe option 2 is better after all.  But then,
>> do I want to implement tp_getattr or tp_getattro?  I don't recall the
>> differences.
>
> Definitely tp_getattro.  The difference is that tp_getattr takes a C
                                                  ^^^^^^^^^^
> string argument and tp_getattr takes a Python string object.
                      ^^^^^^^^^^
I guess I can figure out which you mean by looking at the source
(Luke).

>> > When you call it yourself (rather than when it is called as a result
>> > of __getattribute__).  
>> 
>> When do you call it yourself?
>
> I've never called it myself except in the test suite.
>
>> > I suppose this is a bit redundant.
>> 
>> I guess; I don't know.  I'm trying to understand whether "callable
>> with one or two arguments" is really part of the requirements for use
>> as a property method, or just something that got thrown in there.
>
> The latter.  The type argument was an afterthought -- I had originally
> not thought about class attribute access at all.

OK; I hope you like the doc patch I submitted, then.  It doesn't
require "callable with one argument", only two.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com