[Zope-dev] Circular dependency hell.

Jim Fulton jim at zope.com
Tue Apr 20 15:24:14 EDT 2010


On Tue, Apr 20, 2010 at 3:04 PM, Fred Drake <fdrake at gmail.com> wrote:
> On Tue, Apr 20, 2010 at 2:58 PM, Christian Theune <ct at gocept.com> wrote:
>> zope.testing uses the attribute '__bases__' to store the information what
>> the base layers are. __*__ are supposedly Python internal attributes.
>> Specifically __bases__ is known to be used to store information which base
>> classes a class has.
>
> This sort of misdirection has, unfortunately, a long history in Zope 3
> (and the various things that's become).  Witness __name__.  (There are
> others, but most aren't *actually* used by Python implementations.)
>
> Removing existing __*__ name ("underware") usage is probably
> untenable, but I hope we can avoid extending our foolishness.

OK, let's stop new uses of __*__ names. We won't provide initializers
for classes, or implement operations either.

The use of protocols like __name__ and __bases__ is intended to
conform to common usage in Python.

Let's invent new names that are specific to our own frameworks.

I can live with saying we shouldn't invent new __*__ names,
even though I consider that a meta protocol.  I get annoyed at
criticism for following standard protocols.

Jim

-- 
Jim Fulton


More information about the Zope-Dev mailing list