8

私は疑似コードの代わりに Python をよく使用します。そのために、積み上げていきたいです。リストを使用するのが正しい方法であることはわかっていますが ( source )、スタックを使用していることを明確にするのmyList.pushではなく、リストを使用したいと考えています。myList.append

私は次のような簡単なことをできると思った

myList.push = myList.append

追加操作のエイリアスを定義しますが、取得します

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

リストにプッシュ操作を追加するための短い解決策はありますか?

(実行可能な Python 疑似コードを台無しにするべきではありません)

4

4 に答える 4

16

次のようにリストのサブクラスを作成できます。

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

通常のリストを使用するのと同じ方法でカスタム クラスを使用します。

>>> s = List()
>>> s.push(10)
>>> s.push(20)
>>> s
[10, 20]
于 2012-08-07T07:29:05.767 に答える
5

再定義する代わりに、同じ関数を別名化するのはどうですか?

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

これにより、追加の機能も保持されます。

于 2012-08-07T07:56:28.637 に答える
2
>>> a = []
>>> push  = a.append
>>> push(1)
>>> a
[1]
>>> 
于 2012-08-07T08:28:02.517 に答える