自治等级、计划依赖与预算保留:练习答案
参考实现
保留正文 Budget,追加:
python
b = Budget(10)
assert b.reserve("a",6)
assert not b.reserve("a",1) and b.available == 4
try: b.settle("a",7)
except ValueError: pass
else: raise AssertionError("overspend accepted")
assert b.reserved == {"a":6} and b.available == 4
b.settle("a",2)
assert b.available == 8 and b.reserve("b",8)
print("8 units available before b")验证先于状态修改,使失败结算可重试或转人工,不会丢失 reservation。