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@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)
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/