問題タブ [hasattr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
98 参照

python - Python: AttributeErrors の可能性があるループ

私は配列を持っていrowます。actorオブジェクトの一連の属性を配列に追加したいと考えています。ただし、すべてのアクターがそれぞれの属性を持っているわけではありません。

属性が存在する場合は追加し、存在しない場合は追加するループを実行したいと思います'none'

tryまたはを使用して、ループ内でテストを行う方法が見つからないようですhasattr。これは私が得た限りです。もちろん、属性はループの外で参照されるため、機能しません。

これについて最善の方法は何ですか?

0 投票する
6 に答える
3911 参照

python - 複数の hasattr を同じ条件でチェックする

この条件は、hasattr(form, 'date')が false であっても True として検証されます。

複数を検証する正しい方法は何ですかhasattr?

0 投票する
1 に答える
1227 参照

python - クラス変数が定義されているかどうかを確認する

Python クラス Foo があるシナリオを扱っています。とりわけ Foo は多くの大きな計算を行いますが、私は必要な場合以外は行いません。では、これらの大きな計算の 1 つに対して getter メソッドを定義するとき、計算に対応するメソッド (ここでは bigcalculation()) が既に実行されていることを確認するにはどうすればよいでしょうか?

一度実行すると、二度と実行したくありません。そして、呼び出し元が一度実行されたかどうかを追跡する必要はありません。

今、私は上記の hasattr() 関数を使用してそれを行いますが、これは本当に醜い方法だと思います。それを行うためのよりエレガントなpythonicの方法はありますか?

私が考えることができる代替手段は、init () 関数で、クラスで使用するすべての変数を空のリストとして定義することです。次に、big_calc_result が空のリストであるかどうかを確認して、self.bigcalculation() が既に実行されているかどうかを判断します。これはより良いアプローチですか?

関連する質問: Python では、クラス内でオンザフライで変数を定義できます。しかし、それは悪いプログラミング習慣ですか?

編集:振り返ってみると、例外を使用することも、この状況を処理する別の方法になる可能性があることがわかりました。それは物事を行うためのよりpythonicな方法かもしれません。

この質問に対する答えは役に立ちます: Python でのメンバーの存在の確認

0 投票する
3 に答える
4193 参照

python - クラス名の hasattr

hasattr documentation は、オブジェクトと属性名を取り、その属性がそのオブジェクトに存在するかどうかを知らせると述べています。

クラス名でも機能するように見えることを発見しました(つまり、インスタンスオブジェクトではありません)。

何かのようなもの:

これを使用してテスト コードを簡単に記述できるようにしたいと考えていますが、これが実装の副作用であり、実際には意図されていない場合に備えて、後で噛まれたくはありません。

他に何かできるかどうかを確認するためにテスト コードを表示しないでください。それは実際の問題ではないからです。

これに関する公式のpythonスタンスはありますか?ドキュメントで参照されているオブジェクトは、インスタンスオブジェクトについて話していると思います。

私はグーグルを試しました(そしてStackOverflowでいくつかの質問を見ました)が、何も見つからなかったようです.

0 投票する
2 に答える
1692 参照

python - hasattr は常に False を返します

私が期待している間にprintステートメントが返される理由を誰かが知っていますか?FalseTrue

0 投票する
2 に答える
1843 参照

python - hasattr が属性値自体を取得しないようにする方法

を使用して仮想属性を実装するクラスがあります__getattr__。属性は、クエリの実行など、コストがかかる場合があります。現在、オブジェクトが実際に属性を取得する前に属性を持っているかどうかをチェックするライブラリを使用しています。

その結果、クエリは 1 回ではなく 2 回実行されます。もちろん__getattr__、属性が存在するかどうかを実際に知るために実際に実行することは理にかなっています。

これを防ぐ方法はありますか?

Python がサポートさ__hasattr__れている場合、クエリが存在するかどうかを確認するだけで済み、実際に実行することはできません。

キャッシュを作成できますが、クエリにパラメーターが含まれている可能性があるため、重いです。もちろん、サーバーはクエリ自体をキャッシュして問題を最小限に抑えることができますが、クエリが大量のデータを返す場合は依然として負荷が高くなります。

何か案は?

0 投票する
1 に答える
350 参照

javascript - jqueryで画像にalt属性があるかどうかを確認する方法

alt属性を持つ画像にはクラスを1つ、alt属性を持たない画像にはクラスを1つ追加したいです。

私はこれを試しましたが、うまくいきません