2017-01-25 5 views

答えて

1

あなたがthe source codeからわかるように、PriorityQueueクラスは__len__または__bool__を実装していない、デフォルトでは、オブジェクトが存在する場合、それはtruthyだということです。

クラスはどちらも定義されていない場合__len__()__bool__()でも、そのすべての インスタンスが真と見なされます。

+1

次の質問は、「なぜ__len __()の代わりにqsize()関数を実装したのでしょうか?ソース内のコメント以外に何も分かっていないと、マルチスレッドや競合状態のため、qsize()はおおよそのサイズしか返さないため、予期しない結果を伴う魔法を使用したくないと思われます。ありがとうジョン。 – BeardedOne85

+1

@ BeardedOne85はい、そうです。 '__len__'を実装することは、実際にそれが何であるかを知っていることを意味します! – jonrsharpe

+0

@ BeardedOne85これで、一貫性を保ち、 'empty()'を "キューがおおよそ空であれば真を返す"と文書化するだけです。 :-) –

関連する問題