Can I reference 1 instance of an object by more names ? rephrase

Stef Mientki S.Mientki-nospam at mailbox.kun.nl
Wed May 23 14:51:20 EDT 2007


hi Bruno,

after study it carefully,
it's much more complex than I thought
(I can't understand it completely, which is of less importance).
Your solution works great,
but I need one little extension,
which I can create, but just at the cost of a lot of code.
Maybe you can give me another hint.

> In the first case, this is *really* a binding, and that's one of the few 
> things that Python won't let you mess with. In the two last cases, it's 
> in fact a method call - as the use of __[get|set]item__ should make 
> obvious.
> 
> here's an example using a property:
> 
> class cpu_ports(object):
>    def __init__(self, value=0):
>        self._d = value
>    @apply
>    def value():
>        def fset(self, value):
>            print 'vv'
>            self._d = value
>        def fget(self):
>            return self._d
>        return property(**locals())

# I need to read and write the individual bits of the byte object
# so I can create 8 blocks of code like this, one for each bit position
# I use it, like this
#    name1 = cpu_ports()
#    name1.p5 = True
# or
#    name1.p[5] = True

     @apply   # read / write bit 5
       def p5():
         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(**locals())

I can optimize the above code a little bit,
but I've the feeling that I don't need to repeat this code 8 times.

cheers,
Stef Mientki



More information about the Python-list mailing list