現在、次のクラス メソッドがあります。
def check_capacity(self, at_index)
def update_capacity(self, at_index)
前者はブール値を返し、後者はインスタンス変数を変更します。問題は、両方の方法が非常に似ていることです。DRYに違反しているように感じますか?
私は1つの方法が欲しいです:
def update_capacity(self, at_index)
私は次のように使用できます:
if update_capacity(at_index):
副作用が望ましい場合は意図した副作用を作成し、そうでない場合は False を返します。
私の試みは、インスタンス変数をコピーし、コピーが望ましく変更されたかどうかを確認し、正しい場合はインスタンス変数をコピーに設定してTrueを返すか、そうでない場合は設定せずにFalseを返すことでした。ただし、これは変更可能なデータ構造 (リストなど) では機能しません!
「ディープコピー」でこれを行う必要がありますか?または、これを行うためのより良い方法はありますか? できるだけPythonicになりたいです。
編集
はcheck_capacity
インスタンス変数を反復処理し、変更を加えると条件に違反するかどうかをチェックします。
はupdate_capacity
インスタンス変数を反復処理し、条件に違反しないことを認識して変更を行います。
どちらも非常によく似たコードを持っています。