<div dir="ltr"><div class="gmail_default" style="color:rgb(0,0,0)"><span style="color:rgb(34,34,34)">On Sun, May 13, 2018 at 11:20 AM Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:</span><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>For example, we could allow keywords after 'def' and after a period, and then the following would become legal:</div></div></blockquote><div><br></div><div class="gmail_default" style="color:rgb(0,0,0)">​Our modeling database overloads getattr/setattr (think SQLAlchemy) to allow us to access to database fields as if they were Python data members.  Nothing new here, but we do have problems with keyword collisions on some of the objects, as we are wrapping an already-existing modeling language (MSC Adams Solver dataset) with our objects.  We were pleased with 'print' became a function, because it removed the restriction from that one, but one of the remaining ones is 'return', like this:</div><div class="gmail_default" style="color:rgb(0,0,0)"><br></div><div class="gmail_default"><div class="gmail_default"><font color="#000000">class Sensor:</font></div><div class="gmail_default"><font color="#000000">    def __init__(self):</font></div><div class="gmail_default"><font color="#000000">        setattr(self, "print", 0)</font></div><div class="gmail_default"><font color="#000000">        setattr(self, "return", 0)</font></div><div class="gmail_default"><font color="#000000"><br></font></div><div class="gmail_default"><font color="#000000">s = Sensor()</font></div><div class="gmail_default"><font color="#000000">s.print  # Works now, didn't in Python 2.</font></div><div class="gmail_default"><font color="#000000">s.return  # Bork.</font></div><div class="gmail_default"><font color="#000000"><br></font></div><div class="gmail_default"><font color="#000000">I have a decades old +1 on this.</font></div></div></div></div>