我经常使用Python而不是伪代码。为此,我想有一个堆栈。我知道使用列表是可行的方法(source),但我想使用myList.push
而不是myList.append
来明确我使用堆栈。
我以为我可以做一些简单的事情,比如
myList.push = myList.append
为追加操作定义别名,但我得
stack.push = stack.append
AttributeError: 'list' object has no attribute 'push'
是否存在用于向列表添加推送操作的简短解决方案?
(它不应该搞乱我的可运行的Python伪代码)
答案 0 :(得分:14)
您可以像这样创建 list 的子类:
class List(list):
def push(self, x):
self.append(x)
使用自定义类的方式与使用常规列表的方式相同:
>>> s = List()
>>> s.push(10)
>>> s.push(20)
>>> s
[10, 20]
答案 1 :(得分:5)
而不是重新定义,如何对同一个函数进行别名处理?
class List(list):
def __init__(self):
self.push = self.append
这也会保留附加功能。
答案 2 :(得分:1)
>>> a = []
>>> push = a.append
>>> push(1)
>>> a
[1]
>>>
答案 3 :(得分:0)
>>> stack = type('stack', (list,), {'push':list.append})()
>>> stack.push(1)
>>> stack.pop()
1
>>>