[Zope3-Users] Dynamic __providedBy__

Jim Fulton jim at zope.com
Fri Feb 15 11:26:21 EST 2008


On Feb 14, 2008, at 6:22 PM, Martin Aspeli wrote:

> Hi!
>
> I may have a use case where I need an instance to provide marker
> interfaces dynamically. That is, under certain conditions I want the
> type to say it provides a particular marker interface, and otherwise  
> it
> doesn't. It still needs to support the usual by-class and
> directly-provided idioms for providing interfaces, including
> directlyProvides()/alsoProvides().
>
> Is such a thing possible?

Yes.

> Perhaps one could make __providedBy__ a
> dynamic property or something?

Yes, although the ability to do so has led to memory leaks in some  
cases.

> Or is this a very bad idea?  :)


I think it's a bad idea.  I'm not sure it is a "very" bad idea. :)

This falls in the category of deep magic.  If you can find a way to  
solve your problem that doesn't involve deep magic, I would go with  
that. :)

FWIW, someday, I'm going to look at Python 3 ABCs. It appeared to me  
(the last time I paid attention) that Guido tried to accommodate  
zope.interface ideas to some degree.  It appeared to me at the time  
that it would be possible to provide zope.interface in Python 3  
building on ABCs in a way that preserved the most important semantics  
of zope.interface. I really need to do some prototyping to verify this  
-- but haven't been able to find time.  ABC's wouldn't accommodate  
instance-specific declarations.  If I could get most of what I want  
within the preferred Python architecture, I *think* I'd be willing to  
give up some of the dynamism we have now.

Jim

--
Jim Fulton
Zope Corporation




More information about the Zope3-users mailing list