我可以在Python中向列表添加操作吗?

时间:2012-08-07 07:22:42

标签: python

我经常使用Python而不是伪代码。为此,我想有一个堆栈。我知道使用列表是可行的方法(source),但我想使用myList.push而不是myList.append来明确我使用堆栈。

我以为我可以做一些简单的事情,比如

myList.push = myList.append

为追加操作定义别名,但我得

    stack.push = stack.append
AttributeError: 'list' object has no attribute 'push'

是否存在用于向列表添加推送操作的简短解决方案?

(它不应该搞乱我的可运行的Python伪代码)

4 个答案:

答案 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
>>>