[Python-Dev] [Python-3000] Betas today - I hope

Nick Coghlan ncoghlan at gmail.com
Thu Jun 12 12:35:40 CEST 2008

Guido van Rossum wrote:
> On Wed, Jun 11, 2008 at 4:35 AM, Barry Warsaw <barry at python.org> wrote:
>> So I had planned to do a bunch of work last night looking at the release
>> blocker issues, but nature intervened.  A bunch of severe thunderstorms
>> knock out my 'net access until this morning.
>> I'll try to find some time during the day to look at the RB issues.
>>  Hopefully we can get Guido to look at them too and Pronounce on some of
>> them.  Guido please start with:
>> http://bugs.python.org/issue643841
> I've added a comment. Let me know if anything I said is unclear.

The bugtracker seems to be offline atm - I'll reply there once I can get 
to it again (as well as switching this issue back to being a 
documentation one).

I don't think we're going to see a major clamor for a value-based 
delegation mixin in the standard library until people using classic 
classes for value-based delegation start making serious attempts to port 
to Py3k (where that approach is no longer available). At the moment, 
such classes only need to care about the methods they want to fiddle 
with, leaving everything else to __getattr__ based delegation.

I've pushed as hard as I'm personally willing to for this without 
convincing anyone else that it's worth doing, so I'll start working on a 
documentation patch for the language reference instead which explicitly 
splits the special methods into the following categories:

1. Method lookup MUST bypass __getattribute__, shadowing the attribute 
in the instance dictionary MUST NOT have any ill effects. (All tp_* 
C-level slots and slots looked up via _PyType_Lookup will fit into this 

2. Method lookup MAY bypass __getattribute__, shadowing the attribute in 
the instance dictionary MAY have ill effects. (slots such as __enter__ 
and __exit__ that are looked up via normal attribute lookup in CPython 
will fit into this category)

3. Technically a subcategory of group 1, these are special methods which 
can affect the interpreter's behaviour by their mere definition on a 
type. (The __get__, __set__ and __delete__ descriptor protocol methods 
fall into this category)


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list