At 01:19 PM 4/29/2007 -0400, Calvin Spealman wrote:
>Backward compatability of the super type API raises some issues. Names, the
>lookup of the __call__ of the super type itself, which means a conflict with
>doing an actual super lookup of the __call__ attribute. Namely, the following
>is ambiguous in the current proposal:
>
>     ::
>
>         super.__call__(arg)
>
>Which means the backward compatible API, which involves instansiating the 
>super
>type, will either not be possible, because it will actually do a super lookup
>on the __call__ attribute, or there will be no way to perform a super 
>lookup on
>the __call__ attribute. Both seem unacceptable, so any suggestions are 
>welcome.

Note that if you have a class with a __call__ method, it will still be 
called, even if you override __getattribute__ to return something else when 
asked for the __call__ attribute, e.g.:


 >>> class DoubleCall(object):
...     def __call__(self):
...         return "called!"
...     def __getattribute__(self, attr):
...         if attr=='__call__':
...             return lambda: "attribute"

 >>> dc = DoubleCall()
 >>> dc()
'called!'
 >>> dc.__call__()
'attribute'

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to