[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