Python:Importing moduel Attribute Error,LPTHW ex47:
Question: I'm doing ex47 from Learn python the hard way[This is the
exercise](http://learnpythonthehardway.org/book/ex47.html) And this is my
code:

    
    
    from nose.tools import*
    from ex47.game import Room
    
    def test_room():
    
        gold = Room("GoldRoom",
    
                    """This room has gold in it you can grab. there's a door to the north.""")
    
        assert_equal(gold.name, "GoldRoom")
        assert_equal(gold.paths, {})
    
    def test_room_paths():
    
        center = Room("Center", "Test room in the center.")
        north = Room("North", "test room in the north.")
        south = Room("south", "test room in the south.")
    
        center.add_paths({'north': north, 'south': south})
        assert_equal(center.go('north'), north) 
        assert_equal(center.go('south'), south)
    
    
    def test_map():
    
        start = Room("Start", "You can go west and down a hole.")
        west = Room("Trees", "There are trees here, you can go east.")
        down = Room("Dungeon", "It's dark down here, you can go up.")
    
    
        start.add_paths({'west': west, 'down': down})
        west.add_paths({'east': start})
        down.add_paths({'up': start})
    
    
        assert_equal(start.go('west'), west)
        asset_equal(start.go('west').go('east'), start)
        assert_equal(start.go('down').go('up'), start)
    

However when test this code using nosetest this is what I get:

    
    
    Traceback <most recent call last>:
    File "c:\Python31\lib\site-packages\nose\case.py", line 197,in runtest
        self.test<*self.arg>
    File "C:\path\Ex47\skeleton\tests\ex47_tests.py", line 28, in test_map
        start.add_paths<{'west': west, 'down':down>}
    AttributeError: 'Room' object has no attribute 'add_paths'
    

* * *
    
    
    Ran 3 tests in 0.030s
    
    FAILED <errors=2>
    

But this seems to be ridiculous since add_paths worked fine in
test_room_paths(). This has driven me crazy(google hasn't helped neither
copying the code from the book either).

Please Help!!

I'm using python 3.1, windows 7

Please don't use too much programming Lingo.(I'm very new to programming).

here is the code for game.py just in case you need it.

    
    
    class Room(object):
    
    
    
    def __init__(self, name, description):
        self.name = name
        self.description = description
        self.paths = {}
    
        def go(self, direction):
            return self.paths.get(direction, None)
    
    
        def add_paths(self, paths):
            self.paths.update(paths)    
    


Answer: You state, "add_paths worked fine in test_room_paths()", but you are assuming
the tests are run in the order you've written them. They often are run in
alphabetical order, meaning test_room_paths hasn't executed yet.

Your Room code looks incorrect, you have `def add_paths` indented under `def
__init__`, meaning `add_paths` is a function defined locally in `__init__`,
rather than another method in your class. Be sure all the `def` keywords in
your class are lined up.

