Объект Python — ‘int’ не вызывается

#python-3.x

#python-3.x

Вопрос:

Я пишу односвязный список, который подсчитывает количество слов, импортируемых из тестового файла. Я инициализировал count внутри своего класса. Я определил функцию печати, которая выводит каждый из узлов после их сортировки. Я определил класс count для перебора списка и подсчета всех вхождений слова, переданного ему.

Я хочу передать каждый узел в count, чтобы подсчитать, сколько раз он появляется в моем текстовом файле. Когда я пытаюсь это сделать, в итоге получается, что объект ‘int’ не вызывается. Вот мой код

 class Linked_List:
    def __init__(self):
        self.head = None
        self.count = 1

    def print(self):
        p = self.head
        head = Linked_List_node(p.data)
        while p is not None:
            print(p.data, '-', self.count(p.data)) # This is where the error appears
            p = p.next

    def count(self, x):
        # loop thru list for all x, if find x add 1 to count. Assign final count to that word.
        with open('cleaned_test.txt', 'r') as f:
            for line in f:
                for word in line.split():
                    if word == x:
                        self.count  = 1

    def insert(self, x):
        """"""
        p = self.head
        q = None
        done = False
        while not done:
            if self.head == x:
                done = True

            elif p == None:
                head = Linked_List_node(x)
                q.next = head
                done = True

            elif x == p.data:
                #head = Linked_List_node(x)

                #head.counter  = 1
                done = True

            elif x < p.data:
                if self.head == p:
                    head = Linked_List_node(x)
                    head.next = p
                    self.head = head
                    done = True
                else:
                    head = Linked_List_node(x)
                    head.next = p
                    q.next = head
                    done = True
            q = p
            if p is not None:
                p = p.next
  
 class Linked_List_node:
    def __init__(self, value):
        self.data = value
        self.next = None
  

Комментарии:

1. Пожалуйста, добавьте трассировку стека из сообщения об ошибке к вашему вопросу.

2. Что вы имеете в виду трассировку стека? как файл «linked_list.py «, строка 19, в печати print(p.data, ‘-‘, self.count(p.data)) Ошибка типа: объект ‘int’ не может быть вызван

3. Да, это трассировка стека. Как правило, это помогает обеспечить полный вывод того, что произошло при запуске вашей программы.

4. Кроме того, что self.count(p.data) должно означать?

5. Я хочу подсчитать, сколько раз слово появляется в текстовом файле. Я определил count как функцию, поэтому я передаю p.data в функцию, count (self, x) . p.data — это текущий узел или слово внутри текстового документа.

Ответ №1:

Соответствующая часть вашего кода:

 class Linked_List:
    def __init__(self):
        # ...
        self.count = 1

    def count(self, x):
        # ...
  

self.count = 1 Присваивание перезаписывает значение self.count для каждого Linked_List созданного объекта, поэтому оно ссылается на 1 вместо метода, который вы определили в классе. Переименуйте либо переменную, либо функцию.

Комментарии:

1. Спасибо! Я думал, что это была просто такая ошибка, ха-ха