0

私のプロジェクトの1つでクラスを初めて使用するとき、私はどこかで選択できない間違いを犯しているようです。

class aiRespond:
    def generateResponse( self, external_input ):
        return external_input

    def giveResponse( self, external_input ):
        self.generateResponse(self, external_input)

aiResponder = aiRespond()
retrieve_ai_response = aiResponder.giveResponse()

while 1:
    external_input = raw_input("> ")
    print retrieve_ai_response(external_input)

エラー:

TypeError: unbound method giveResponse() must be called with aiRespond instance as first argument (got str instance instead)

私はこれを構造化する多くの異なる方法を試しました。retrieve_ai_response = aiRespond.giveResponseこれに似たものがたくさんあるので、一列に並べたいと思います。

誰かが私がどこに向かっているのか、そしてその理由を指摘してもらえますか?

4

2 に答える 2

3

関数giveResponseの結果をretrieve_ai_responseに割り当てています。

試す:

retrieve_ai_response = aiResponder.giveResponse

また、giveResponse関数本体の最初の引数として「self」を削除します。self.generateResponseを呼び出しているので、それは必要ありません。

def giveResponse( self, external_input ):
    return self.generateResponse(external_input)
于 2012-12-19T01:25:17.867 に答える
1
class aiRespond:
    def generateResponse( self, external_input ):
        return external_input

    def giveResponse( self, external_input ):
        return self.generateResponse( external_input) #remove self as parameter,add return

aiResponder = aiRespond()
retrieve_ai_response = aiResponder.giveResponse #remove "()"

while 1:
    external_input = raw_input("> ")
    print retrieve_ai_response(external_input)

私はあなたのコードを変更しました、それがうまくいくことを願っています!

于 2012-12-19T01:38:33.330 に答える