Python 引用类方法时发生类型错误
第一次在我的一个项目中与班级一起工作,我似乎在某个我无法选择的地方犯了一个错误Python 引用类方法时发生类型错误,python,class,methods,python-2.7,typeerror,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 =
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\u ai\u response=aiRespond.giveResponse
在一行中,因为我将有很多类似的东西
有人能指出我要讲的内容和原因吗?您正在分配函数giveResponse的结果以检索\u ai\u响应 尝试: 也要摆脱“self”作为giveResponse函数体的第一个参数。当您调用self.generateResponse时,您不需要它:
def giveResponse( self, external_input ):
return self.generateResponse(external_input)
您正在分配函数giveResponse的结果以检索_ai_响应 尝试: 也要摆脱“self”作为giveResponse函数体的第一个参数。当您调用self.generateResponse时,您不需要它:
def giveResponse( self, external_input ):
return self.generateResponse(external_input)
我已经修改了你的代码,希望它能工作
我已经修改了你的代码,希望它能工作 我还强烈建议您使用新样式的类(搜索差异的定义以及如何使用它们)。《Python风格指南》PEP 8也是您可能喜欢阅读的内容(标准Python代码将使用其命名约定,其名称包括
AIRespond
、generate\u response
和ai\u responder
)。@ChrisMorgan感谢您的建议。我对PEP 8特别感兴趣,因为我看到其他人也向其他海报建议这一点。新风格的课程似乎有点让人困惑,但在我讲话的时候,我正在看一些关于它们的视频教程。非常感谢。我还强烈建议您使用新样式的类(搜索差异的定义以及如何使用它们)。《Python风格指南》PEP 8也是您可能喜欢阅读的内容(标准Python代码将使用其命名约定,其名称包括AIRespond
、generate\u response
和ai\u responder
)。@ChrisMorgan感谢您的建议。我对PEP 8特别感兴趣,因为我看到其他人也向其他海报建议这一点。新风格的课程似乎有点让人困惑,但在我讲话的时候,我正在看一些关于它们的视频教程。谢谢大家!giveResponse
应该返回一个值。谢谢chm我已经修改了响应。谢谢,这很有效。我不确定该给谁打勾,因为你们两人的回答都是那么专一、那么好。谢谢!:)giveResponse
应该返回一个值。谢谢chm我已经修改了响应。谢谢,这很有效。我不确定该给谁打勾,因为你们两人的回答都是那么专一、那么好。谢谢!:)谢谢,这完全符合需要。我看到我的参数加倍了。谢谢,这完全符合需要。我看到我的参数加倍了。
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)