[Python-Dev] assymetry in descriptor behavior

Guido van Rossum guido@python.org
Mon, 24 Feb 2003 07:40:34 -0500


> 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.

> > 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.

--Guido van Rossum (home page: http://www.python.org/~guido/)