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)
他の提案はありますか?PS例外処理の使用は許可されていません:)