第一次在我的一个项目中使用类,我似乎在某个地方犯了一个我无法选择的错误。
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
成为一行,因为我会有很多与此类似的东西。
有人会介意指出我要去哪里以及为什么?
答案 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)
我修改了你的代码,希望它有用!