<div dir="ltr">I'm suggesting the addition of support to using a dot notation when defining a function to be a method of a class, or a callback attribute. For example:<div><br></div><div>    def foo(self):</div><div>        pass</div><div>    Foo.foo = foo</div><div><br></div><div>Becomes:</div><div><br></div><div>    def Foo.foo(self):</div><div>        pass</div><div><br></div><div>Other syntaxes can also be used if the dot itself is an issue, although I dislike these:</div><div><br></div><div>    def Foo:foo(self):</div><div>    def foo@Foo(self):</div><div>    def Foo>foo(self):</div><div>    def Foo&foo(self):</div><div><br></div><div>This functionality would be useful in the few rare cases where the class itself needs to be accessed in the function's definition (decorator, typing, etc.):</div><div><div><br></div><div>    @barify(Foo)</div><div>    def Foo.method(self, other: Foo) -> Foo:</div><div>        pass</div></div><div><br></div><div>And when an object needs a callback as an attribute:</div><div><br></div><div>    class Menu:</div><div>        def __init__(self, items=None, select_callback=None):</div><div>            self.items = items if items is not None else []</div><div>            self.select_callback = select_callback</div><div><br></div><div>    my_menu = Menu([item1, item2])</div><div><br></div><div>    def my_menu.select_callback(self, item_index):</div><div>        print(self.items[item_index])</div><div><br></div><div>As opposed to:</div><div><br></div><div>    my_menu = Menu([item1, item2])</div><div><div><br></div><div>    def select_callback(self, item_index):</div><div>        print(self.items[item_index])</div></div><div>    my_menu.select_callback = select_callback</div><div><br></div><div>Or defining them in "unnatural" order:</div><div><div><br class="gmail-Apple-interchange-newline">    def select_callback(self, item_index):</div><div><div>        print(self.items[item_index])</div></div></div><div><br></div><div><div>    my_menu = Menu([item1, item2], select_callback)</div></div></div>