Problem is to remove the duplication of 'name' in expressions like this:
name = cls( 'name', arg, kw=val )
Would using a builtin that gives the name of the variable being assigned to be enough? A builtin like lhs_variable_name() - not a great name.
name = cls( lhs_variable_name(), arg, kw=val )
This escapes from the problem of knowing the name space that name is in and needing to understand the details of the expression.
It does not need a decorator with the complexity of needing a break down of the RHS expression.
Now I do not need the 'name' to be the first argument:
name = function( arg, kw=lhs_variable_name() )
I'm not sure what the behavior should be for multiple LHS names.
name1, name2 = cls( lhs_variable_name(), arg )
Is this an error and an exception is raised? Always return the first name, 'name1'? Does lhs_variable_name() return a tuple of ('name1','name2')? Does lhs_variable_name() take an argument to choose?