副作用は極力排除したいというのは、副作用がきっかけのバグを作らないためにも大事です。 ですが、すべての副作用を排除することはとても難しい。 関数型言語であるHaskellなんかは、モナドを使って副作用をある手続きの中に閉じ込めることで対処していたりします。 一方、オブジェクト指向プログラミング言語では、副作用を前提としている操作も多いですよね。 いろんなメリット・デメリットがあると思いますが、オブジェクトの状態を変えながら操作を行うというのは良くあるやり方かと思います。 状態、と言って真っ先に思いつくのはStateモナドですよね?(そんなことはない) State モナド - All About Monad State Monad - HaskellWiki 今回は、上に上げた2番目のリンク先にあるコードを、Pythonを使って表現してみようと思います。モナドらないと言っても、今回Pytho