0

第一次在我的一个项目中使用类,我似乎在我无法选择的地方犯了一个错误。

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

还要去掉“self”作为 giveResponse 函数体中的第一个参数。当您调用 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 回答