title: TypeError: object does not support indexing
body: <pre><code>...
   return cls(P2[0] - P1[0], P2[1] - P1[1])
  TypeError: 'Vector' object does not support indexing
  </code></pre>
  
  <p>I am new to pygame and python. I have been trying to practice building classes and Vectors, struggling much.</p>
  
  <p>here is my class file</p>
  
  <pre><code>import math
  
  class Vector(object):
  
      #defaults are set at 0.0 for x and y
      def __init__(self, x=0.0, y=0.0):
          self.x = x
          self.y = y
  
      #allows us to return a string for print
      def __str__(self):
          return "(%s, %s)"%(self.x, self.y)
  
      # from_points generates a vector between 2 pairs of (x,y) coordinates
      @classmethod
      def from_points(cls, P1, P2):
          return cls(P2[0] - P1[0], P2[1] - P1[1])
  
      #calculate magnitude(distance of the line from points a to points b
      def get_magnitude(self):
          return math.sqrt(self.x**2+self.y**2)
  
      #normalizes the vector (divides it by a magnitude and finds the direction)
      def normalize(self):
          magnitude = self.get_magnitude()
          self.x/= magnitude
          self.y/= magnitude
  
      #adds two vectors and returns the results(a new line from start of line ab to end of line bc)
      def __add__(self, rhs):
          return Vector(self.x +rhs.x, self.y+rhs.y)
  
      #subtracts two vectors
      def __sub__(self, rhs):
          return Vector(self.x - rhs.x, self.y-rhs.y)
  
      #negates or returns a vector back in the opposite direction
      def __neg__(self):
          return Vector(-self.x, -self.y)
  
      #multiply the vector (scales its size) multiplying by negative reverses the direction
      def __mul__(self, scalar):
          return Vector(self.x*scalar, self.y*scalar)
  
      #divides the vector (scales its size down)
      def __div__(self, scalar):
          return Vector(self.x/scalar, self.y/scalar)
  
      #gives my vector class an ability to return a tuple
      def tuple(self):
          return (self.x, self.y)
  </code></pre>
  
  <p>and here is my program code</p>
  
  <pre><code>#The simple mouse move game by Ramon Cabral
  
  
  #imports
  import pygame, sys, Vector
  from pygame.locals import *
  from Vector import *
  
  #game init
  pygame.init()
  
  #screen
  screen = pygame.display.set_mode((800,600),0,32)
  
  #images
  mouse_file = 'mouse.png'
  MOUSE = pygame.image.load(mouse_file).convert_alpha()
  
  
  #variables
  bgcolor = (255,255,255)
  position = Vector(100.0,100.0)
  heading = Vector()
  
  #clock and speed
  clock = pygame.time.Clock()
  speed = 250.0
  
  
  #main game function
  while True:
  
      for event in pygame.event.get():
          if event.type == QUIT:
              pygame.quit()
  
          if event.type == MOUSEBUTTONDOWN:
              destination = pygame.mouse.get_pos()
              heading = Vector.from_points(position, destination)
              heading.normalize()
  
      screen.fill(bgcolor)
      screen.blit(MOUSE, position.tuple())
  
      time_passed = clock.tick(30.)
      time_passed_seconds = time_passed/1000.0
  
      distance_moved = time_passed_seconds*speed
      position += heading * distance_moved
      pygame.display.update()
  </code></pre>