明らかに、__contains__
の特別なメソッドでは、メソッドのオブジェクトがメソッドの右側にある場合に、in
エバリュエーションを実装できます。私はin
が左手オペランドによって実装されなければならないコードを持っています。それについてどうすればいいですか?オペレータの左側にあるクラスのオーバーライド
1
A
答えて
1
私はeqをオーバーライドすることでこれを動作させることができました(テキストにアンダースコアをどのように入れますか?)。
"some_listの値"というコードを考えてみましょう。それは値を見つけるまでsome_listを通して反復するでしょう。しかし、それが価値を見出したかどうかは、どのように分かりますか?それを比較することによって。それはあなたが上書きしたいものです。
class Twenty(object):
def __init__(self):
self.x = 20
def __eq__(self, y):
print "comparing", self.x, "to", y
return self.x == y
value = Twenty()
assert value in [10, 20, 30]
assert value not in [1, 2, 3]
出力
comparing 20 to 10
comparing 20 to 20
comparing 20 to 1
comparing 20 to 2
comparing 20 to 3
+0
欠点は、すべての比較演算子を実装する必要があることです。 http://gerg.ca/blog/post/2012/python-comparison/ –
+0
私はこのアプローチを使用することができませんが、私は答えに感謝します。 – ArekBulski
関連する問題
- 1. オペレータがオペレータの右側にあるオブジェクトでPythonでオーバーロードする
- 2. LINQのは、等号の左側にあるクラスが
- 3. Pythonのオペレータがオーバーライド:__ge__結果はPythonのオペレータがオーバーライド約
- 4. 活字無効左側私はこのエラーを取得するのにオペレータ
- 5. 親divの外側にある左マージンシフトテーブル
- 6. Tiny Circular ProgressBarの左側にあるEdittext
- 7. クラスリテラルの左側にあるクラスのみが許可されています
- 8. STL std :: mapオペレータ[]割り当ての右側にある場合
- 9. 左側のドロップダウン
- 10. 左側のポストインクリメント
- 11. セマンティックUIカード(左側に画像あり)
- 12. バイナリ表現の左側にある1の数を数える
- 13. 表示ページの左側にある最初の列の4行
- 14. 左側の行末にプロットラベル
- 15. uinavigation barの左側にあるボタンの問題
- 16. 画面の左側にあるタブの検索方法は?
- 17. TSQL vbinary bitmaskingとvarbinaryの右側のオペレータ
- 18. Graphviz:左側のラベル
- 19. 左側のUITableViewスクロールインジケータ
- 20. 外側のdivに2つの要素が並んでいて、左側に1つ、右側に1つある
- 21. パッケージの左側にあるマークは何ですか(Androidスタジオ)
- 22. Eclipse C/C++の太い白い縦線が左側にある
- 23. Rコンソールの左側にある「+」記号は何ですか?
- 24. ページの左側にあるフッタを見つけよう(フレックスボックス)
- 25. あるクラスから別のクラスへのメソッドのオーバーライド
- 26. MSAccess - 右側にあるすべてのSQLクエリまたは左側にある文字
- 27. バイナリ述語の左側にBreezeJSの問題があります。
- 28. 左外側は
- 29. 左外側は
- 30. NSIS - スタートメニューの左側のショートカット
右側にはどのような種類があるかもしれませんか?この要件がなぜ発生したのかについてのより詳細な情報は有用であろう。 –
'__rcontains__'はありません。コンテナに含まれるものを決定するのはコンテナだけです。 – user2357112