Python stackのpopとpush

class MyStack:
    def __init__(self):
        self.stack = []
    
    def push(self, item):
        self.stack.append(item)

    def pop(self):
        pass

mystack = MyStack()
mystack.push(0)
mystack.push(1)
mystack.push(2)
print(mystack.stack)

$ python3 test.py
[0, 1, 2]

pop

    def pop(self):
        result = self.stack[-1]
        del self.stack[-1]
        return result

print(mystack.pop())
print(mystack.pop())

取り出して削除なので、[-1]の後にdelを実行している。
上記と同じことをpop()と書くことができる。

    def pop(self):
        return self.stack.pop()

stackが0の場合があるので、例外処理も書かなければならない。

    def pop(self):
        if len(self.stack) == 0:
            return None
        return self.stack.pop()