2

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例外処理の使用は許可されていません:)

4

1 に答える 1