On Sat, 24 Nov 2007 14:09:04 +0100, Ton van Vliet wrote: > On 24 Nov 2007 08:48:30 GMT, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> > wrote: > >>On Sat, 24 Nov 2007 09:12:34 +0100, Ton van Vliet wrote: >> >>> Just bringing up something I sometimes miss from good-old Turbo-Pascal >>> here, which has the WITH statement to reduce the typing overhead with >>> (long) record/struct prefixes, used like: >>> >>> with <prefix> do begin >>> a = ... >>> b = ... >>> end; >>> >>> where all variables would be automatically prefixed with the <prefix> >>> (if present in the already available record definition!) >> >>And here lies the problem: The compiler decides at compile time which >>names are local to a function and there is no equivalent of a record >>definition to make that decision. > > The whole clause following 'using self:' could be seen as the record > definition: all attribute assignments/bindings in there should be > prefixed with 'self' (if not already existing in the self namespace?) > and thereby become instance attributes, which outside the 'using self' > clause still need 'self.' as the (namespace?) prefix.
So:: def meth(self): using self: tmp = raw_input('Enter age: ') age = int(tmp) becomes:: def meth(self): using self: self.tmp = self.raw_input('Enter age: ') self.age = self.int(tmp) Binding `tmp` unnecessarily to the object and trying to get `raw_input()` and `int()` from the object. Ouch. :-) Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list