[Zope3-dev] Re: adapter registration question
Philipp von Weitershausen
philipp at weitershausen.de
Mon Nov 13 13:05:01 EST 2006
Tres Seaver wrote:
> Philipp von Weitershausen wrote:
>> Chris Withers wrote:
>>> Christian Theune wrote:
>>>> The problem you have is to provide a specification for the 'str'
>>>> interface.
>>> 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.
>>
>>> 2. I was to register the "function" str as an adapter for, say, the
>>> "class" int to the "class" str, so there's not factory for the adapter,
>>> since it's a function
>>>
>>>> Let's create a marker interface that promises everything that 'str' does:
>>>>
>>>> class IString(zope.interface.Interface):
>>>> """A marker for the 'str' interface."""
>>> As discussed elsewhere, you shouldn't need the marker interface, as you
>>> can adapt classes.
>> 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...
>
> Like adapting to None?
Heh, good point.
> Thnk of cataloguing / indexing use cases: adapting the catalogued
> object to a string value (or tuple, or whatever) using named adapters is
> a very "natural" way to make indexing pluggable: what is *unnatural*
> (or at least a "dead chicken") is the requirement to adapt to an
> 'IString', when what I really want is a 'str'.
Well, part of Python idea is duck typing and requiring that you get a
'str' may be too much. Perhaps you would really only like to get
something that quacks like str. OTOH, perhaps you absolutely want a
'str' and that use case should perhaps be allowed...
--
http://worldcookery.com -- Professional Zope documentation and training
More information about the Zope3-dev
mailing list