Stef Mientki wrote: > Peter Otten wrote: >> Stef Mientki wrote: >> >>> Maric Michaud wrote: >> >> def bit(index): >>>> def fset(self, value): >> >>>> value = ( value & 1L ) << index >>>> mask = ( 1L ) << index >>>> self._d = ( self._d & ~mask ) | value >>>> def fget(self): >> >>>> return ( self._d >> index ) & 1 >>>> return property(**locals()) >>>> >>>> >>>> class cpu_ports(object) : >> >> p1 = bit(1) >> p2 = bit(2) >> p3 = bit(3) >> p4 = bit(4) >> p5 = bit(5) >> >>> Looks good, but I miss the index :-( >> >> No more. > agreed, > but Python doesn't like it, > and I don't understand why
Because the index is now in the locals() dict. Change the return statement to fix the error: > def bit(index): > def fset(self, value): > #index = 5 > value = ( value & 1L ) << index > mask = ( 1L ) << index > self._d = ( self._d & ~mask ) | value > def fget(self): > #index = 5 > return ( self._d >> index ) & 1 return property(fget, fset) Again, I'm confident, again I didn't test. Peter -- http://mail.python.org/mailman/listinfo/python-list