Tennessee Leeuwenburg wrote:
I'm not sure if this problem I face affects many other people, but I'll just describe it and see what kind of feedback I get.

I have a suggestion for a new piece of Python syntax when defining methods. I have seen the following done, and have done it myself


class FanstasticClass:

    def __init__(self):
        self.someFantasticMethod("Hello")

    def someFantasticMethod(self, argument = True):
        print argument
justAsFantastic = someFantasticMethod

In order to set up a second method, justAsFantastic, which is just an alias to someFantasticMethod

This is fairly rare, I believe.

The shortcoming of this approach is that supposing we have some unfamiliar codebase. In my method I see a call to someObject.justAsFantastic("Wahoo"). In order to find that method, I do a file search for "def justAsFantastic(" in order to make sure (a) I only get method definitions and (b) I don't get any extraneous methods.

The search will also fail if there is other than a single space between 'def' and 'meth_name'.

This is especially relevant to methods which might be commonly used as variable names elsewhere in the code.

I suggest allowing the following syntax:

   def justAsFantastic = someFantasticMethod

which will *do* exactly the same thing, but by a syntactic marker that the variable justAsFantastic points to a method.


Comments appreciated!

Tack '# def justAsFantastic' on the end of the line and the search will work.

The the def search also does not work with methods set from outside.

class C:...

def _(s,args): pass
C.somemeth = _
# or setattr(C, 'somemeth', _)

nor would the proposal work with an aliasing decorator

@alias('justAsFantastic')
def someFantasticMethod(args): ...

which some would prefer if doing very many aliases. Better to just search for 'justAsFantastic'.

tjr



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to