现在,我有以下类方法:
def check_capacity(self, at_index)
def update_capacity(self, at_index)
前者返回一个布尔值,而后者改变一个实例变量。问题是这两种方法都做非常相似的事情。我觉得我违反了 DRY?
我想要一种方法:
def update_capacity(self, at_index)
我可以用作:
if update_capacity(at_index):
如果副作用是可取的,这将产生预期的副作用,否则返回 False。
我的尝试是复制实例变量,检查副本是否需要更改,然后将实例变量设置为副本,如果正确并返回 True,否则不设置并返回 False。但是,这不适用于可变数据结构(如列表)!
我应该只使用“深拷贝”吗?还是有更好的方法来做到这一点?我想尽可能像 Pythonic。
编辑
迭代实例变量并检查进行更改是否会check_capacity
违反条件。
迭代实例变量并进行更改,update_capacity
知道条件不会被违反。
两者都有非常相似的代码。