[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