如何在python dict上获取_usetitem_uu调用的返回值

如何在python dict上获取_usetitem_uu调用的返回值,python,python-2.7,Python,Python 2.7,我刚刚扩展了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

我刚刚扩展了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
不起作用(它期望
=
=

将输出132(它将首先执行语句的右侧(
a['1']=132
),然后将值复制到w中,而不是方法的返回值)

下面的方法可以工作,但并不真正有用(如果不能按预期使用,为什么要重载操作符?)

还有其他建议吗?
另外,我不允许使用异常处理:)

在您的特定示例中,

dict
仅在密钥不可散列时返回
False
。在任何其他情况下,转让有效

就像在进行任何赋值时,不需要测试
某个变量是否真的是
2
,因为它是

dict
的情况下,无效密钥(如
列表
)将失败,并会通知您:

>>> some_dict = {}
>>> some_dict[[0]] = 42   #the key is a list [0], unhashable
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>一些dict={}
>>>有些dict[[0]]=42#关键是一个列表[0],不易损坏
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:不可损坏的类型:“列表”

总之,您不需要测试分配的成功与否,因为它从来不会自动失败。

所以我无法测试我的方法调用是否成功?(我仍然可以通过添加另一个属性
'success\u assign'
得到我想要的东西,该属性在输入函数时将设置为True,如果没有成功则设置为False)@NiCU如果没有成功,它应该抛出一个你可以处理的异常。@glglglglgl我知道,但我不能使用异常。@NiCU O-kay。这很奇怪。我知道如果密钥不可散列,它应该引发异常,但我被限制不对此任务使用异常处理:|
print dict_out.__setitem__(1, 132)
>>> some_dict = {}
>>> some_dict[[0]] = 42   #the key is a list [0], unhashable
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'