Another bikeshed idea on positional-only parameters: def foo([self], a, b, *args, **kwds): ... The square brackets are meant to suggest that the name is something only of interest to the implementation of the function, and not to be taken as part of the API. -- Greg