【发布时间】:2013-08-09 07:47:34
【问题描述】:
我只是将 dict 的 setitem 方法的默认行为扩展为如下所示
class SafeSwapDict(dict):
def __setitem__(self, key, value):
if isinstance(key, collections.Hashable):
super(SafeSwapDict, self).__setitem__(key, value)
else return False
return True
当我调用该方法时,我想获得那些返回值,但我似乎找不到转机,因为
a = SafeSwapDict()
print a['1'] = 132
不起作用(它希望 = 是 ==)
还有
a = SafeSwapDict()
w = a['1'] = 132
print w
会输出132(它会先执行右边的语句(a['1'] = 132)然后把值复制到w中,而不是方法的返回值)
以下方法可行,但并不是真正有用(如果不能按预期使用运算符,为什么要重载它?)
print dict_out.__setitem__(1, 132)
还有其他建议吗? 附言我不允许使用异常处理:)
【问题讨论】:
-
所以我无法测试我的方法调用是否成功? (我仍然可以通过添加另一个属性
'success_assign'来获得我想要的东西,当进入函数时将设置为 True,如果没有成功则设置为 False) -
@NiCU 如果没有成功,它应该抛出一个你可以处理的异常。
-
@glglgl 我知道,但我被限制不使用异常。
-
@NiCU 好的。这很奇怪。
标签: python python-2.7