TypeError引用类方法

2024-04-25 01:50:01 发布

您现在位置:Python中文网/ 问答频道 /正文

第一次在我的一个项目里上课,我似乎犯了一个我选不出来的错误。你知道吗

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是在一行,因为我会有很多类似的事情。你知道吗

有人能指出我要去的地方和原因吗?你知道吗


Tags: 项目instanceselfinputresponsedef错误external
2条回答
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)

我已经修改了你的代码,希望它能工作!你知道吗

您正在分配函数giveResponse的结果以检索\ ai \ u响应。你知道吗

尝试:

retrieve_ai_response = aiResponder.giveResponse

也要摆脱“self”作为giveResponse函数体的第一个参数。当你打电话的时候自生反应你不需要它:

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

相关问题 更多 >