[Python-Dev] PEP 443 - Single-dispatch generic functions

Ethan Furman ethan at stoneleaf.us
Thu May 23 20:38:05 CEST 2013


On 05/23/2013 11:13 AM, Éric Araujo wrote:
>
> Thanks for writing this PEP.  Blessing one implementation for the stdlib
> and one official backport will make programmers’ lives a bit easier :)
>
>>    >>> @fun.register(int)
>>    ... def _(arg, verbose=False):
>>    ...     if verbose:
>>    ...         print("Strength in numbers, eh?", end=" ")
>>    ...     print(arg)
>>    ...
>
> Does this work if the implementation function is called like the first
> decorated function? (I don’t know the proper terminology) e.g.
>
>      >>> @fun.register(int)
>      ... def fun(arg, verbose=False):
>      ...     if verbose:
>      ...         print("Strength in numbers, eh?", end=" ")
>      ...     print(arg)
>
> The precedent is 2.6+ properties, where prop.setter mutates and returns
> the property object, which then overwrites the previous name in the
> class dictionary.

Actually, properties return new instances:

--> class Test(object):
...     _temp = 'fleeting'
...     @property
...     def temp(self):
...         return self._temp
...     @temp.setter
...     def new_temp(self, value):
...         self._temp = value
...

--> id(Test.temp)
30245384

--> id(Test.new_temp)
30246352

--> Test.temp is Test.new_temp
False

--
~Ethan~


More information about the Python-Dev mailing list