Philipp von Weitershausen wrote:
Chris Withers wrote:
Christian Theune wrote:
The problem you have is to provide a specification for the 'str'
There are a couple of problems here...
1. str is both a "function" and a "class"
Nope. It's a class since Python 2.2.
...hence the quotes. It's a "function" in that I want to use it as an
adapter that doesn't need to be instantiated by a factory before being used.
Right, as an *input* of the adaption it's ok just to specify a class.
But the output obviously always has to be specified by an interface.
Otherwise the whole point of using of adaption is perverted...
Not really. It's the ability to register the adapter, and change which
adapter you choose to use that's important for me here. I think it
should be fine to adapt to a class if you can adapt from a class. Is
there anything in the implementation that actually prevents this?
(which I, for one, would consider a bug)
Wtf? Then why do you need an adapter?
I thought you wanted to say
IString(1) instead of str(1) to be more flexible...?
Hmm, I see your point, but there are other ways to get an adapter than
by calling an interface ;-)
(and I think I'd need to use those here, since there is no interface)
...and factory="str" is wrong for the reasons given above, or, put
differently, because str()(1) will tell you that strings aren't
Huh? You got that wrong. IString(1) will call str(1) if
provideAdapter(str, (int,), IString).
right, but factory="" registers and adapter factory, not an adapter and
provideAdapter registers an adapter directly, correct?
Simplistix - Content Management, Zope & Python Consulting
Zope3-dev mailing list