2012-12-14 41 views
0

試圖在Zed Shaw的LPTHW中製作我自己的RPG角色生成器。部分任務是爲程序的每個「房間」創建一個新課程,如WelcomeScreenChooseMutationsLPTHW ex。 45,如何從另一個模塊的類中返回函數?

這是主程序。

import rooms 

class Program(object): 

    def __init__(self, start): 
     self.start = start 

    def run(self): 
     next_room_name = self.start 

     while True: 
      room = getattr(self, next_room_name) 
      next_room_name = room() 

x = rooms.WelcomeRoom() 

Program(x.hello_user()) 

這裏是rooms文件它試圖拉東西。

class WelcomeRoom(object): 

    def __init__(self): 
     pass 

    def hello_user(self): 
     print '*' * 79 
     print '\n' 
     print '\t\tWelcome to the' 
     print '\t\tMetamorphosis Alpha Character & Random Encounter Generator' 
     print '\t\tProgrammed poorly by Raymond Weiss' 
     print '\n' 
     print '*' * 79 
     raw_input('Please press enter to continue') 
     return 'get_name' 

    def get_name(self): 

     name = raw_input('Hello, whats your name?', 
       '\n', 
       ':> ') 

但是當我在Python運行主程序,它只是記錄來自rooms返回函數get_name()出來代替。輸出如下。

Raymond-Weisss-MacBook-Pro:macgre Raylug$ python macgre.py 
******************************************************************************* 


     Welcome to the 
     Metamorphosis Alpha Character & Random Encounter Generator 
     Programmed poorly by Raymond Weiss 


******************************************************************************* 
Please press enter to continue 
Raymond-Weisss-MacBook-Pro:macgre Raylug$ 

我提前道歉,如果我的問題的標題不正是我嘗試問,作爲一個新手,它有時很難不知道究竟要問。

回答

1

您正在返回一個字符串,而不是函數(或函數結果)。你可能想是這樣的:

def hello_user(self): 
    return self.get_name 

def hello_user(self): 
    return self.get_name() 

根據你的計劃,我想你也許想要第二個。所不同的是,第一個函數返回get_name函數,而第二個函數返回get_name函數的結果

+0

這工作!謝謝!只要它允許我接受它作爲答案。 – lerugray

相關問題