我可以在Python的列表中添加一个操作吗?

2024-05-17 06:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想我可以做一些简单的事情

myList.push = myList.append

为append操作定义别名,但是

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

向列表中添加推送操作的short解决方案是否存在?

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


Tags: 方法代码source列表定义objectstack堆栈
3条回答

您可以将list的子类如下:

class List(list):
    def push(self, x):
        self.append(x)

使用自定义类的方式与使用常规列表的方式相同:

>>> s = List()
>>> s.push(10)
>>> s.push(20)
>>> s
[10, 20]

与其重新定义,不如对同一个函数进行别名处理?

class List(list):
    def __init__(self):
        self.push = self.append

这也将保留append的功能。

>>> a = []
>>> push  = a.append
>>> push(1)
>>> a
[1]
>>> 

相关问题 更多 >