10

I'm getting the following error in my code. I am attempting to make a maze solver and I am getting an error that says:

Traceback (most recent call last):
  File "./parseMaze.py", line 29, in <module>
    m = maze()
TypeError: 'module' object is not callable

I am attempting to create a maze object called m but apparently I'm doing something wrong.

I wrote these lines in parseMaze.py

#!/user/bin/env python

import sys
import cell
import maze
import array

# open file and parse characters
with open(sys.argv[-1]) as f:
# local variables
  x = 0 # x length
  y = 0 # y length
  char = [] # array to hold the character through maze
  iCell = []# not sure if I need
# go through file
  while True:
    c = f.read(1)
    if not c:
      break
    char.append(c)
    if c == '\n':
      y += 1
    if c != '\n':
      x += 1
  print y
  x = x/y
  print x

  m = maze()
  m.setDim(x,y)
  for i in range (len(char)):
    if char(i) == ' ':
      m.addCell(i, 0)
    elif char(i) == '%':
      m.addCell(i, 1)
    elif char(i) == 'P':
      m.addCell(i, 2)
    elif char(i) == '.':
      m.addCell(i, 3)
    else:
      print "do newline"
  print str(m.cells)

Here is my maze.py file which contains the maze class:

#! /user/bin/env python

class maze:

  w = 0
  h = 0
  size = 0
  cells =[]

# width and height variables of the maze
  def _init_(self):
    w = 0
    h = 0
    size = 0
    cells =[]


# set dimensions of maze
  def _init_(self, width, height):
    self.w = width
    self.w = height
    self.size = width*height

# find index based off row major order
  def findRowMajor(self, x, y):
    return (y*w)+x

# add a cell to the maze
  def addCell(self, index, state):
    cells.append(cell(index, state))

What is it that I am doing wrong?

3 Answers 3

39

It should be maze.maze() instead of maze().

Or you could change your import statement to from maze import maze.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks! Is the first maze referencing the file and the second referencing the class?
@user2604504 Yes. But to technically it's referencing the module (that got constructed with the content of the file), not the file.
0

The problem is the import statement, you can only import a class not module. 'import maze' is wrong rather use 'from maze import maze'

Comments

0

I guess you have overridden the builtin function/variable "module" by setting the global variable "module". just print the module see whats in it.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.