I think that the most important simple thing with dunder/magic methods is
name mangling, and that an abstraction like your proposed one makes it less
clear what will happen to a name.
Also, as Nick Coghlan pointed out, there are a lot of dunder/magic methods
<https://docs.python.org/3/reference/datamodel.html>. Either each of those
methods would need an alternate representation, or some would be left out -
which would lead to inconsistent style.
Maybe I'm resisting change too much, but I think that the solution to this
issue is to make the magic method documentation easier to teach, as opposed
to changing them.

-Ryan Birmingham

On 7 November 2016 at 23:49, Stephen J. Turnbull <
turnbull.stephen...@u.tsukuba.ac.jp> wrote:

> Nathan Dunn writes:
>
>  > > * the mapping protocol covers more than just __getitem__
>  >
>  > __setitem__(self, key, value)   could be    def self[key] = value
>  > likewise
>  > __delitem__(self, key)                      def del self[key]:
>  > __iter__(self)                              iter(self)
>  > __len__(self)                               len(self)
>
> The template used by last two (BTW, shouldn't they be "def iter(self)"
> and "def len(self)"?) seems like a really bad idea to me.  This would
> imply that any class that defines such methods in some arbitrary
> fashion will appear to participate in the corresponding protocol
> although it doesn't.  That seems likely to result in bugs, that might
> be hard to diagnose (haven't thought about how hard that might be,
> though).  It would require the programmer to know about all such
> protocols when designing a public API, while with the dunder
> convention, you only need to find out whether the dunders you want to
> use for your new protocol are already in use somewhere, and
> programmers who aren't designing protocols don't need to know about
> them at all.  It would also require a modification to the compiler for
> every new protocol.
>
> I personally don't see that the other syntaxes are helpful, either,
> but that's a matter of opinion and I'd be interested to hear about
> experience with teaching languages that implement such "method
> definitions look like invocation syntax".
>
> Regards,
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to