[Python-ideas] Define a method or function attribute outside of a class with the dot operator

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: def foo(self): pass Foo.foo = foo Becomes: def Foo.foo(self): pass Other syntaxes can also be used if the dot itself is an issue, although I dislike these: def Foo:foo(self): def foo at Foo(self): def Foo>foo(self): def Foo&foo(self): 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.): @barify(Foo) def Foo.method(self, other: Foo) -> Foo: pass And when an object needs a callback as an attribute: class Menu: def __init__(self, items=None, select_callback=None): self.items = items if items is not None else [] self.select_callback = select_callback my_menu = Menu([item1, item2]) def my_menu.select_callback(self, item_index): print(self.items[item_index]) As opposed to: my_menu = Menu([item1, item2]) def select_callback(self, item_index): print(self.items[item_index]) my_menu.select_callback = select_callback Or defining them in "unnatural" order: def select_callback(self, item_index): print(self.items[item_index]) my_menu = Menu([item1, item2], select_callback) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170210/00e6a261/attachment.html>