我正在创建一个单词解析类,并不断获得
“<< .Word_Parser实例在0x1037dd3b0>处的绑定(bind)方法Word_Parser.sort_word_list”
我运行此错误:

class Word_Parser:
    """docstring for Word_Parser"""
    def __init__(self, sentences):
        self.sentences = sentences

    def parser(self):
        self.word_list = self.sentences.split()

    def sort_word_list(self):
        self.sorted_word_list = self.word_list.sort()

    def num_words(self):
        self.num_words = len(self.word_list)

test = Word_Parser("mary had a little lamb")
test.parser()
test.sort_word_list()
test.num_words()
print test.word_list
print test.sort_word_list
print test.num_words

最佳答案

这里没有错误。您正在打印一个函数,这就是函数的外观。

要实际调用该函数,必须在其后放置括号。您已经在上面完成了。如果要打印调用函数的结果,只需让函数返回值,然后将打印内容放在该位置即可。例如:

print test.sort_word_list()

另一方面,如果您希望函数更改对象的状态,然后以其他方式打印状态,那也可以。

现在,您的代码似乎可以在某些地方工作,但在其他地方却不能。让我们看看原因:
  • parser设置了一个名为word_list的变量,您稍后使用print test.word_list,这样就可以了。
  • sort_word_list设置一个名为sorted_word_list的变量,稍后您将使用print test.sort_word_list -即函数,而不是变量。因此,您将看到绑定(bind)方法。 (此外,正如乔恩·克莱门茨(Jon Clements)所指出的那样,即使您解决了这个问题,您也要打印None,因为那是sort返回的内容。)
  • num_words设置一个名为num_words的变量,然后再次打印该函数-但在这种情况下,该变量与该函数具有相同的名称,这意味着您实际上是用其输出替换该函数,因此它可以正常工作。但是,这可能不是您想要的。

  • (在某些情况下,乍一看似乎是个好主意-您只想计算一次,然后一次又一次地访问它而又不不断地对其进行重新计算。但这不是这样做的方法。使用@property或使用备注装饰器。)

    关于python - 绑定(bind)方法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13130574/

    10-11 07:40