On Jan 27, 1:06 pm, coldpizza <[EMAIL PROTECTED]> wrote: > There is a pattern that occurs fairly often in constructors in Python > and other OOP languages. > > Let's take an example: > > class Server(object): > def __init__(self, host, port, protocol, bufsize, timeout): > self.host = host > self.port = port > self.protocol = protocol > self.bufsize = bufsize > self.maxthreads = maxthreads > self.timeout = timeout > > Imho, in the class above the assignment to instance fields does not > contain much programming logic and therefore can be safely 'abstracted > away' by the language itself with a syntax which would look something > like this: > > class Server(object): > def __init__(self, @host, @port, @protocol, @bufsize, @timeout): > pass > > This would be equivalent to the first example above, yet it does not > obfuscate the code in any way. Or does it? It does look much cleaner > to me. > > Of course, the ampersand is just an arbitrary choice and might have > bad connotations for those who read it as 'take address of' but @ has > some allusion to delegates which maybe is ok. > > I am not an experienced programmer and I am not sure if this is > necessarily a good idea, so I wanted to get some feedback from more > experienced Pythonistas before submitting it elsewhere.
If you search on this list, you will find that there has been *many* proposals to remove self (which, I realize is slightly different than what yo propose) and that the main argument can be summarized as "Explicit is better than implicit." Personally, I like the idea you suggest, with the modification that I would use "." instead of "@", as in class Server(object): def __init__(self, .host, .port, .protocol, .bufsize, .timeout): pass André -- http://mail.python.org/mailman/listinfo/python-list