Pythonでクラスの "boolness "を定義する
2023-08-21 13:19:13
質問内容
なぜ素朴に期待したように動かないのでしょうか?
class Foo(object):
def __init__(self):
self.bar = 3
def __bool__(self):
return self.bar > 10
foo = Foo()
if foo:
print 'x'
else:
print 'y'
(出力は
x
)
どのように解決するのですか?
Python 2-3互換のため、サンプルにこれを追加するだけです。
Foo.__nonzero__ = Foo.__bool__
を含めるか、Fooの元の定義を拡張してください。
__nonzero__ = __bool__
もちろん逆も可能で、その場合はメソッド名が
__nonzero__
で、それを
__bool__
という名前ですが、私は
__nonzero__
は、Pythonがオブジェクトをゼロとの等価性に基づいて真偽を判断するという、オリジナルのC言語的な解釈の遺産に過ぎないのです。 上記の記述を追加するだけで、あなたのコードは Python 2.x で動作し、 Python 3.x にアップグレードしても自動的に動作します (そして、最終的には
__nonzero__
).
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] print()を使用してクラスのインスタンスを表示するには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法