我做了这个堆栈程序:
class Stack(object):
def __init__(self):
self.items = []
def empty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def pop(self):
return self.items.pop()
def Items(self):
print self.items
当我尝试 stack.empty
它说<bound method Stack.empty of <__main__.Stack object at 0x01C437B0>>
.我不知道我做错了什么。
最佳答案
您只是忘记了调用方法:
stack.empty()
如果您必须让它作为属性使用,请使用 property
object :
@property
def empty(self):
return self.items == []
你可以在这里使用 not
,空容器在 bool 上下文中被认为是 false,如果容器 not self.items
产生 True
是空的:
@property
def empty(self):
return not self.items
Demo(没有属性
来演示方法):
>>> class Stack(object):
... def __init__(self):
... self.items = []
... def empty(self):
... return not self.items
... def push(self, item):
... return self.items.append(item)
... def pop(self):
... return self.items.pop()
...
>>> stack = Stack()
>>> stack.empty
<bound method Stack.empty of <__main__.Stack object at 0x10211c090>>
>>> stack.empty()
True
>>> stack.push('foo')
>>> stack.empty()
False
>>> stack.pop()
'foo'
>>> stack.empty()
True
关于Python对象绑定(bind)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371062/