我试过str和repr。但是它们都不起作用,仍然在0x10cefccc0>这些东西返回<main.UnorderedList对象。
class Stack:
def __init__(self):
self.items = UnorderedList()
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def __repr__(self):
return str(self.items)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items) - 1]
def size(self):
length = self.items.size()
count = 0
for i in range(0, length):
count += 1
return count
print(stack_list.__repr__())
结果是:[<main.Node对象位于0x10db27c18>,<main.Node对象位于0x10db27d30>]
如果你有兴趣得到你在“结果是”后写的输出(你的问题有点不清楚),你可以使用这段代码:
def __repr__(self):
return '[ %s ]' % ', '.join(repr(item) for item in self.items)
但是,__repr__()
函数应该返回对象的表示,它应该在解释时再次重新创建对象。所以请考虑一下:
class Stack:
def __init__(self, items):
self.items = UnorderedList(items)
def __repr__(self):
return 'Stack([ %s ])' % ', '.join(repr(item) for item in self.items)
这将产生repr
输出,如Stack([ "foo", "bar" ])
。
不过,我发现你编写一个基于无序列表的堆栈是很奇怪的。这很令人困惑,我不建议首先这样做。通常,堆栈具有其项目的固定顺序。