title: AttributeError : Class Instance has no __call__ method
body: <p>I'm a bit new to python, but familiar with OOP. I'm trying to write a game using PyGame. Basically, my aim is to render trees every few seconds and move the tree rects across the screen.</p>
  
  <p>So here is my code:</p>
  
  <pre><code>from collections import deque
  import pygame,random,sys
  
  pygame.init()
  size = 800,600
  screen = pygame.display.set_mode(size)
  
  class tree:
      def __init__(self):
              self.img = pygame.image.load("tree.png")
              self.rect = self.img.get_rect()
      def render(self):
              screen.blit(self.img,self.rect)
      def move(self,x,y):
              self.rect = self.rect.move(x,y)
  
  #creating a queue of trees
  trees = deque()
  
  #appending the first tree on to the queue 
  trees.append(tree())
  
  
  while 1:
  
  
      for event in pygame.event.get():
              if event.type == pygame.QUIT: sys.exit()
  
      #appending tree() to trees queue every 300 ms
      if pygame.time.get_ticks() % 300 == 0:
              trees.append(tree())
  
      #rendering and moving all the tree rects of trees in the queue
      for tree in trees:
              tree.render()
              tree.move(20,2)
      pygame.display.flip()
  </code></pre>
  
  <p>But when I execute this the first few trees are generated successfully but then the PyGame window closed off and I get this error:</p>
  
  <pre><code>Traceback (most recent call last):
  File "error.py", line 25, in &lt;module&gt;
  trees.append(tree())
  AttributeError: tree instance has no __call__ method
  </code></pre>