0

ZedShawのLPTHWでex45用の独自のRPGキャラクタージェネレーターを作成しようとしています。WelcomeScreen割り当ての一部は、またはのように、プログラムの「部屋」ごとに新しいクラスを作成することChooseMutationsです。

これがメインプログラムです。

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',
                 ':> ')

get_name()しかし、Pythonでメインプログラムを実行すると、から関数を返すのではなく、ログアウトするだけですrooms。以下に投稿された出力。

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$ 

私の質問のタイトルが私が尋ねようとしているものと正確に一致しない場合は、事前に謝罪します。初心者として、正確に何を尋ねるべきかわからないことがあります。

4

1 に答える 1

1

関数(または関数の結果)ではなく、文字列を返します。あなたはおそらく次のようなものが欲しいでしょう:

def hello_user(self):
    return self.get_name

また

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

あなたのプログラムに基づいて、私はあなたがおそらく2番目のものが欲しいと思います。違いは、最初のものはget_name 関数を返すのに対し、2番目のものは関数の結果を返すことget_nameです。

于 2012-12-14T14:05:05.223 に答える