Adding Values From Tuples of Same Length

后端 未结 6 980
隐瞒了意图╮
隐瞒了意图╮ 2020-12-06 05:07

In a graphical program I\'m writing using pygame I use a tuple representing a coordinate like this: (50, 50).

Sometimes, I call a function which returns another tupl

6条回答
  •  情歌与酒
    2020-12-06 05:13

    This is a work in progress as I am learning Python myself. Can we use classes here, could simplify some operations later. I propose to use a coord class to store the coordinates. It would override add and sub so you could do addition and subtraction by simply using operators + and -. You could get the tuple representation with a function built into it.

    Class

    class coord(object):    
        def __init__(self,x,y):
            self.x = x
            self.y = y
    
        def __add__(self,c):
            return coord(self.x + c.x, self.y + c.y)
    
        def __sub__(self,c):
            return coord(self.x - c.x, self.y - c.y)
    
        def __eq__(self,c): #compares two coords
            return self.x == c.x and self.y == c.y
    
        def t(self): #return a tuple representation.
            return (self.x,self.y)
    

    Usage

    c1 = coord(4,3) #init coords
    c2 = coord(3,4)
    
    c3 = c1 + c2    #summing two coordinates. calls the overload __add__
    print c3.t()    #prints (7, 7)
    c3 = c3 - c1
    print c3.t()    #prints (3, 4)
    print c3 == c2  #prints True
    

    you could improve coord to extend other operators as well (less than, greater than ..).

    In this version after doing your calculations you can call the pygame methods expecting tuples by just saying coord.t(). There might be a better way than have a function to return the tuple form though.

提交回复
热议问题