Python 3.x 这是什么<;<;的绑定方法Stack.pop__0x03C74AB0处的主堆栈对象>&燃气轮机;什么意思?

Python 3.x 这是什么<;<;的绑定方法Stack.pop__0x03C74AB0处的主堆栈对象>&燃气轮机;什么意思?,python-3.x,indexoutofboundsexception,postfix-notation,Python 3.x,Indexoutofboundsexception,Postfix Notation,我相信这意味着您返回了pop方法的函数对象,而不是postfixEval末尾的值。将operanstack.pop更改为operanstack.pop()(添加括号以应用pop方法,而不是返回它) 此外,如果我没有弄错的话,'12+'.split()将在python中返回'123',因为split使用空格作为默认分隔符。如果要将字符串转换为单个字符的列表,可以将字符串转换为列表。list('12+')将返回['1','2','+'],在这种情况下,这意味着您使用的是方法对象,而不是调用它。在do

我相信这意味着您返回了
pop
方法的函数对象,而不是
postfixEval
末尾的值。将
operanstack.pop
更改为
operanstack.pop()
(添加括号以应用
pop
方法,而不是返回它)


此外,如果我没有弄错的话,
'12+'.split()
将在python中返回
'123'
,因为
split
使用空格作为默认分隔符。如果要将字符串转换为单个字符的列表,可以将字符串转换为列表。
list('12+')
将返回
['1','2','+']

,在这种情况下,这意味着您使用的是方法对象,而不是调用它。在
doMath
方法中,您应该像这样使用两个变量:
op1()*op2()

class Stack:
    def __init__(self):
        self.items = []
    def push(self,item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def isEmpty(self):
        return (self.items ==[])
    def __str__(self):
        return str(self.items)

def postfixEval(postfixExpres):
         operandStack = Stack()
         tokenlist = postfixExpres.split()

         for token in tokenlist:
           if token in "0123456789":
             operandStack.push(int(token))
           else:
             operand2 = operandStack.pop
             operand1 = operandStack.pop
             result = doMath(token,operand1,operand2)
             operandStack.push(result)
         return operandStack.pop

def doMath(op,op1,op2):
       if op == "*":
        return op1*op2
       elif op == "/":
        return op1/op2
       elif op =="+":
        return op1 + op2
       elif op == "-":
        return op1 - op2

print(postfixEval('12+'))    
class stack():
    def __init__(self):
        self.items=[]
    def push(self,item):
        self.items.append(item)
    def pop(self):`
        self.items.pop()
    def get_stack(self):
        return self.items
    def emp(self):
        return self.items==[]
    def peek(self):
        if not self.emp():
            return self.items[-1]

s=stack()
print("stack is empty: ",s.emp())
s.push('a')
s.push('b')
print(s.get_stack())
s.push(12)
print(s.get_stack())
s.pop()
print(s.get_stack())
s.push('c')
print(s.get_stack())
print('peek value is: ',s.peek())
print("stack is empty: ",s.emp())