Ошибка типа: неподдерживаемые типы операндов для : «int» и «метод»

#python-3.x #list #class

Вопрос:

Мне нужно реализовать класс стека, который будет хранить только целые числа. Реализуйте в этом классе метод, который вычисляет четные и нечетные числа и возвращает деление суммы четных на шансы. Чтобы добавить каждое число, необходимо разложить стопку. При использовании этого метода стек будет пуст. Вот мой код:

 import sys
import re

class Stack:


def __init__(self):
    self.stack=[] t
    self.size_stack = 0
    self.even=[] 
    self.odd=[] 
    
    
def stack(self, e):
    self.stack.append(e)
    self.size_stack  =1 

#método para remover e retornar o final da pilha    
def unstack(self):
    if self.void() == False:
        self.size_stack -=1 
        return self.stack.pop()            


def top(self):
    if self.void() == False:
        return self.stack[-1] 
    #return None


def void(self):
    if self.size_stack == 0 :
        return True
    return False


def size(self):
    return self.size_stack
   
def sum_stack(self):
    for num in self.stack:
        if num % 2 == 0:
            self.even.append(self.top)
            self.stack.pop()
        else:  
            self.odd.append(self.top)
            self.stack.pop()
            
    result_even = sum(self.even)
    result_odd = sum(self.odd)
    final_result = result_even/result_odd 
    return final_result
            

        
p = Stack()


n = int(input("Enter the number of digit to be entered: "))
for i in range(0, n):
    print("Type the ",i 1,'º number: ')
    inter = int(input())
    p.empilhar(inter)

       

print(p.final_result())
 

Это дает мне эту ошибку при result_even = sum(self.even): «Ошибка типа: неподдерживаемые типы операндов для : «int» и «метод»»

Пожалуйста, помогите.

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

1. self.even.append(self.top) это добавление метода ( self.top ) в self.even . Вы хотели вызвать этот метод? ( self.even.append(self.top()) .

2. Да. Это работает! Большое вам спасибо!!!

3. Также обратите внимание , что если внутри top , self.void() == False равно False, top будет неявно возвращено None значение , которое будет помещено в self.evens , что вызовет аналогичную ошибку, как и раньше.