[Python-3000] Implementations: A syntax for extending method dispatching beyond type/class inheritance
Dave Anderson
python3000 at davious.org
Thu Dec 7 16:37:24 CET 2006
on 12/7/2006 10:06 AM Hasan Diwan wrote:
> The parametrized version of the pass keyword could be used to indicate a
> formal interface.
>
> I may be missing something here, but we already have a mechanism for
> defining that a object defines certain methods. Could we not keep it
> orthogonal and have, e. g.:
>
> class super():
> def __init__(self): pass
>
> def typeOfSuper(self): pass(subclass)
>
> The way pass is defined now would remain the default. A new builtin
> pass() would be added to support your notion of interfaces.
I feel on a different page from you.
My best guess it is that
def typeOfSuper(self):
pass(subclass)
is ceding its implementation to its subclasses, kind of like what an
abstract class or interface would do
but I feel my guess is wrong. Please clarify.
>>
>> def add_key_value_pair(arg: MutableContainer.add, key, value):
>> arg[key] = value
>
> def __add__(self, onemore):
> MutableContainer.add (self, onemore.key, onemore.value):
>
I'm not getting the insight you are trying to convey by contrasting
these two functions.
The former is an example of someone writing a function whose first
parameter is expected to be any object that is derived from
MutableContainer (including dict), or is derived from a class that
implements MutableContainer (including those implementing dict), or is
derived from a class that specifically implements MutableContainer.add
using a declaration like:
class CanAdd:
implements MutableContainer.add
def add(self, key, value):
...
The later seems to be a class method which uses MutableContainer's add
method to add any object that has a key and a value attribute.
More information about the Python-3000
mailing list