__setitem__ implementation in Python for Point(x,y) class

前端 未结 7 996
故里飘歌
故里飘歌 2020-12-14 12:44

I\'m trying to make a Point class in python. I already have some of the functions, like __ str__ , or __ getitem__ implemented, and it works great. The only problem I\'m fac

7条回答
  •  再見小時候
    2020-12-14 13:19

    This is pretty old post, but the solution for your problem is very simple:

    class point(object):
        def __init__(self,x=0,y=0):
            self.x=x
            self.y=y
    
        def __str__(self):
            return "point(%s,%s)"%(self.x,self.y)
    
        def __getitem__(self,item):
            return self.__dict__[item]
    
        def __setitem__(self,item,value):
            self.__dict__[item] = value
    

    Each class has his own dictionary with all properties and methods created inside the class. So with this you can call:

    In [26]: p=point(1,1)
    In [27]: print p
    point(1,1)
    In [28]: p['x']=2
    In [29]: print p
    point(2,1)
    In [30]: p['y']=5
    In [31]: print p
    point(2,5)
    

    It is more readable then your "index" like reference.

提交回复
热议问题