<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">That saves one line, at the cost of introducing even more complexity to<br>
the language.<br>
<br>
Are these use-cases common enough to justify the extra syntax?<span><br></span></blockquote><div><br></div></span><div>Keep in mind that the extra syntax is *very* minor, and goes hand-to-hand with the existing attribute access syntax. Basically it's taking the existing syntax to one more place, where it in my opinion should have been since long ago.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
What advantage does this proposed syntax have?<br>
<br>
Since that's not actually a rhetorical question, I'll answer it myself:<br>
<br>
def Spam.method(self) not only saves the line<br>
<br>
    Spam.method = method<br>
<br>
but it also avoids leaving a global name "method" in the namespace (no<br>
need to follow with `del method`); it makes it explicit from the<br>
beginning that the function is an attribute of Spam.<br></blockquote><div><br></div></span><div>Yeah this is a major reason why I want this, and the reason I mentioned "unnatural order" in the original mail. Having the class's name in the beginning just makes it feel right..</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If the implementation is clever enough, it can avoid clashing with a<br>
global of the same name:<br>
<br>
eggs = "something"<br>
<br>
def Spam.eggs(self):<br>
    ...<br>
<br>
def Cheese.eggs(self):<br>
    ...<br>
<br>
assert eggs == "something"<br>
<br>
<br>
So the idea isn't without merit; but the question in my mind is whether<br>
the advantages outweigh the extra complexity.</blockquote><div><br></div></span><div>I didn't even realize you would avoid the global namespace issue too, this makes me fall in love with the idea even more. I really think the added complexity isn't much. One thing to consider, however, is what would happen if someone attempted to use this in a class definition:</div><div><br></div><div>class Foo:</div><div>    ...</div><div><br></div><div>class Bar:</div><div>    def Foo.meth(self):</div><div>        ...</div></div></div></div>
</div><br></div>