On Sun, 23 Jun 2013 13:09:21 -0600, Ian Kelly wrote: > On Sun, Jun 23, 2013 at 12:50 PM, Steven D'Aprano > <steve+comp.lang.pyt...@pearwood.info> wrote: >> What else would you call a function that does lookups on the current >> object's superclasses? > > Well, as James Knight points out in the "Super Considered Harmful" > article, the equivalent in Dylan is called "next-method", which isn't a > valid identifier in Python but seems like a reasonable starting point.
I don't believe it is. Dylan's next-method is an implicit, automatically generated method parameter (a little like Python's "self") which holds the current value of the next method in the inheritance chain. Unlike super, it's only defined inside methods, because it is an implicit parameter to each method. It does not return a proxy object like Python's super, it's merely an alias to the next method in the chain (or Dylan's equivalent of False, when there is no such method), so you can't use it for arbitrary attribute lookups like you can with super. I am not an expert on Dylan, but I'm pretty sure the above is correct. Here are some definitive references: http://opendylan.org/books/drm/Method_Dispatch#HEADING-50-32 http://opendylan.org/documentation/intro-dylan/objects.html next-method and super can be used for similar things, but they work in completely different ways, and next-method is quite limited compared to super. But suppose super had been named "next_method", as you suggest. Given a class C and an instance c, if I say `x = next_method(C, c)`, which method is x the next method of? That's a trick question, of course. x is not a method at all, it is a proxy object such that when you do attribute lookup on it, it will return the appropriate attribute. -- Steven -- http://mail.python.org/mailman/listinfo/python-list