On Sun, Oct 7, 2012 at 7:50 PM, Franck Ditter <fra...@ditter.org> wrote: > def foo(self) : > (a,b,c,d) = (self.a,self.b,self.c,self.d) > ... big code with a,b,c,d ... >
This strikes me as ripe for bug introduction. There's no problem if you're just reading those values, and mutating them is equally fine, but suddenly you need a different syntax for modifying instance members. def foo(self) : (a,b,c,d) = (self.a,self.b,self.c,self.d) e = a+b c.append(1234) d=self.d = 57 # Oops, mustn't forget to assign both! Since Python lacks the extensive scoping rules of (say) C++, it's much simpler and safer to be explicit about scope by adorning your instance variable references with their "self." tags. There's a guarantee that you can use "self.a" in any situation where you want to manipulate that member, a guarantee that's not upheld by the local "a". In theory, I suppose you could use a C-style preprocessor to help you. class Foo(object): #define asdf self.asdf #define qwer self.qwer def __init__(self,a,q): asdf=a; qwer=q def __repr__(self): return "Foo(%s,%s)"%(asdf,qwer) This is not, however, Pythonic code. But if you made some kind of better declaration than #define, and used a preprocessor that understood Python indentation rules and flushed its token list at the end of the class definition, you could perhaps make this look not-ugly. I still wouldn't recommend it, though. ChrisA -- http://mail.python.org/mailman/listinfo/python-list