TypeError引用类方法

时间:2012-12-19 01:23:13

标签: python class methods python-2.7 typeerror

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

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成为一行,因为我会有很多与此类似的东西。

有人会介意指出我要去哪里以及为什么?

2 个答案:

答案 0 :(得分:3)

您将函数giveResponse的结果分配给retrieve_ai_response。

尝试:

retrieve_ai_response = aiResponder.giveResponse

同样摆脱'self'作为giveResponse函数体中的第一个参数。当你调用self.generateResponse时,你不需要它:

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

答案 1 :(得分: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)

我修改了你的代码,希望它有用!