[Tutor] How to extract a float from an instancemethod call

Dave Angel davea at davea.name
Mon Apr 8 14:52:21 CEST 2013


On 04/08/2013 08:40 AM, Sydney Shall wrote:
> Hi,
> I am  learning Python.
>
> I use MAC OSX 10.6.8
> Python 2.7.3
>
> I have been given a project to write a program involving random walks.
> I have drafted a program which has passed all the static tests, but on
> testing my program i get the following error message:
>
>
> Traceback (most recent call last):
>    File "/Users/Sydney/Documents/6.00x Files/Problem
> Sets/ProblemSet7/ps7 copy.py", line 303, in <module>
>      testRobotMovement(StandardRobot, RectangularRoom)
>    File "ps7_verify_movement.py", line 12, in testRobotMovement
>    File "/Users/Sydney/Documents/6.00x Files/Problem
> Sets/ProblemSet7/ps7 copy.py", line 285, in updatePositionAndClean
>      while self.room.isPositionInRoom(self.position) == False:
>    File "/Users/Sydney/Documents/6.00x Files/Problem
> Sets/ProblemSet7/ps7 copy.py", line 163, in isPositionInRoom
>      return self.room[(x,y)] in self.room
> KeyError: (<bound method Position.getX of <__main__.Position object at
> 0x4699490>>, <bound method Position.getY of <__main__.Position object at
> 0x4699490>>)
>  >>>
>
> The program text referred to is the following, I give the whole module,
> which is part of a larger program.
>   def isPositionInRoom(self, pos):
>          """
>          Return True if pos is inside the room.
>
>          pos: a Position object.
>          returns: True if pos is in the room, False otherwise.
>          """
>          x = pos.getX
>          y = pos.getY

You never show the code for Position.getX and Position.getY, but I'd 
expect they're methods that take no arguments.  in that case, you need 
parens in order to call them.

            x = pos.getX()
            y = pos.getY()

>          return self.room[(x,y)] in self.room
>

a simple print of x and y could have revealed this as well.


-- 
DaveA


More information about the Tutor mailing list