如何在python dict上获取_usetitem_uu调用的返回值
我刚刚扩展了dict的setitem方法的默认行为,如下所示如何在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
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'