object indexing and item assignment

Benjamin Kaplan benjamin.kaplan at case.edu
Fri Nov 13 08:10:00 EST 2009


On Fri, Nov 13, 2009 at 7:57 AM, King <animator333 at gmail.com> wrote:
> class MyFloat(object):
>    def __init__(self, value=0.):
>        self.value = value
>
>    def set(self, value):
>        self.value = value
>
>    def get(self):
>        return self.value
>
> class MyColor(object):
>    def __init__(self, value=(0,0,0)):
>        self.value = (MyFloat(value[0]),
>                        MyFloat(value[1]),
>                        MyFloat(value[2]))
>
>    def set(self, value):
>        self.value[0].set(value[0])
>        self.value[1].set(value[1])
>        self.value[2].set(value[2])
>
>    def get(self):
>        return (self.value[0].get(),
>                self.value[1].get(),
>                self.value[2].get())
>
> col = MyColor()
> col[0].set(0.5) # 'MyColor' object does not support indexing
> col[0] = 0.5 # 'MyColor' object does not support item assignment
>
>
> The last two lines of the script produce errors. (written as
> comments). I know it won't work as I am expecting. One solution I can
> think of is to rewrite MyFloat and MyColor by sub classing default
> python types "float and "tuple". Is this the only solution?
>
> Prashant
>
> Python 2.6.2
> Win XP 32
> --

In order to support indexing and item assignment, implement the
__getitem__ and __setitem__ methods.


def __getitem__(self, index) :
   return self.value[index]

def __setitem__(self, index, value) :
   self.value[index].set(value)



> http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list