問題タブ [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.
python - Python の hasattr が間違った結果を返すことがある
インスタンスに属性hasattr
がないと言われるのはなぜですか?foo
私は期待しました:
python - Pythonプロパティが存在することを確実にチェックする方法は?
bar
次のクラス (バグのあるプロパティを持つ) が与えられた場合、プロパティが存在することを確認する最も簡単な方法は何ですか?
両方ともhasattr
失敗getattr
し、機能するだけdir
です:
私が考えることができる最善の総合的な解決策は次のとおりです。
より良い方法はありますか?
python - hasattr は、アプリ エンジンの ndb エンティティに対して常に True を返します
この回答を自分のプロジェクトに適用しています
これは、is_deleted が後で追加された私の ndb エンティティです。
エンティティを logging.info で印刷すると、
私がするとき
しかし、たとえば次のようにします。
私は何を間違っていますか?
python-3.x - getattr() による動的メソッド呼び出しで値を返す方法
while ループ コマンド プロンプトを実行するクラスが呼び出され、コマンド シェルのメソッドのリストを動的に作成するために使用dir()
しています。getattr()
値を返したいのですが、動的に呼び出されたメソッドから戻ると、メインの while ループに戻るだけです。これを修正するにはどうすればよいですか?
python - getattr を使用して別のクラスで関数を呼び出す
ここでは可能性の範囲外のことをしようとしているのかもしれませんが、希望を捨てる前にまず質問しようと思いました. それで、ここに行きます...
A と B の 2 つのクラスがあります。各クラスには任意の数の関数があります。クラス B はクラス A のどこかでインスタンス化され、クラス A はそのインスタンス化を介してクラス B 機能の 1 つを利用します。クラス B の関数は、クラス A の現在のインスタンス化データを使用して、1 つ以上のクラス A の関数を参照する必要があります。
クラスA
クラス B:
次のエラーが表示されます。
getattr(the_class, function_name)()
TypeError: unbound メソッド foo() は、classA インスタンスを最初の引数として呼び出す必要があります (代わりに何も取得しません)
ありがとう!
python - __getattribute__ 呼び出しが hasattr によるものかどうかを検出する
私は__getattribute__
クラスのために再実装しています。
__getattribute__
誤った (もちろん、失敗が予想されることを意味します) 属性の提供の失敗 (実装が非常に複雑であることが判明したため) に注意したいと思います。そのために、コードが発生する直前に属性を検索/提供できなかった場合、警告を記録しAttributeError
ます
私は知っています:
__getattribute__
実装はできるだけ小さくすることをお勧めします。__getattribute__
実装が呼び出された方法/理由に基づいて異なる動作をすることは、間違っていると見なされます。try/except
を使用する代わりに、属性にアクセスするコードを使用することもできますhasattr
。
TL;DR : それにもかかわらず、 (属性にアクセスする「本物の」試みとは対照的に) が原因で への呼び出し__getattribute__
が行われたかどうかを検出したいと思います。hasattr