問題タブ [getattr]
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のgetattrを広範囲に使用するのは悪い習慣ですか?
シェルのような環境を作成しています。ユーザー入力を処理する私の元の方法は、関数がPythonのファーストクラスオブジェクトであるという事実を利用して、さまざまなクラスのメソッドにコマンド(文字列)をマッピングする辞書を使用することでした。
柔軟性のために(主にコマンドの解析のために)、getattr(command)を使用するようにセットアップを変更し、必要なメソッドを取得して、パーサーの最後に引数を渡すことを考えています。このアプローチのもう1つの利点は、新しいメソッド/コマンドを追加するたびに(現在静的に実装されている)コマンドディクショナリを更新する必要がないことです。
私の質問は2つあります。まず、getattrにはevalと同じ問題がありますか?第二に、シェルの効率に打撃を与えるでしょうか?私が持っているメソッド/コマンドの数は重要ですか?現在、30個のコマンドを調べていますが、最終的には2倍になる可能性があります。
python - Python で getattr を使用してメソッドを呼び出す
getattr を使用してメソッドを呼び出す方法は? 「oposite_」という単語で始まる他のクラスの存在しないメソッドを呼び出すことができるメタクラスを作成したいと考えています。メソッドは同じ数の引数を持つ必要がありますが、反対の結果を返す必要があります。
しかし、問題は
NoneType オブジェクトを返します。
これに対処する方法は?
python - 現在のモジュールでsetattr()を呼び出すにはどうすればよいですか?
現在のモジュールに変数を設定するために、最初のパラメーター " object
"として関数に何を渡しますか?setattr(object, name, value)
例えば:
と同じ効果を与える:
これらの行を含むモジュール内(正しいobject
)。
モジュールレベルで動的にいくつかの値を生成しますが、モジュールレベルで定義できないため__getattr__
、これがフォールバックです。
python - インデックス アクセスだけでなく、属性を介して dict に再帰的にアクセスしますか?
私はこのようなことをしたいと思います:
私の動機は、コードの簡潔さを改善することであり、可能であれば Javascript と同様の構文を使用して JSON オブジェクトにアクセスし、効率的なクロスプラットフォーム開発を行うことです。(Py2JSなども使用しています。)
python - Python の静的/クラス変数の __getattr__
私は次のようなクラスを持っています:
MyClass.Foo
orMyClass.Bar
が呼び出されるたびに、値が返される前にカスタム メソッドを呼び出す必要があります。Pythonで可能ですか?__getattr__
クラスのインスタンスを作成し、独自のメソッドを定義できれば、それが可能であることはわかっています。しかし、私のシナリオでは、このクラスをインスタンスを作成せずにそのまま使用します。
また、呼び出されたときに呼び出されるカスタム__str__
メソッドが必要str(MyClass.Foo)
です。Python はそのようなオプションを提供していますか?
python - __getattr__と__getattribute__の違い
__getattr__
いつ使用するか、またはを理解しようとしています__getattribute__
。記載されているドキュメントは__getattribute__
、新しいスタイルのクラスに適用されます。新しいスタイルのクラスとは何ですか?
python - 文字列としてのPythonチェーンgetattr
オブジェクトのチェーン属性呼び出しを文字列として実行するために、上記の不器用なスニペットを開発する必要がありました。これに対してもっと賢くて効率的な解決策があるかどうか私は興味があります。
database - App Engine Datastoreでプロパティが欠落しているエンティティをクエリしますか?
私はこのようなモデルを持っています:
これで、値を保存するときに、更新されたプロパティの値を毎回入力できない場合があります。これは、一部のエンティティでは値が存在しない可能性があることを意味します。
プロパティが更新されていないExampleの種類のすべてのエンティティを取得できるように、データストアクエリを作成したいと思います。
どうすればこれを行うことができますか?
ps私はデフォルト値を設定し、それを照会できることを知っています。しかし、問題は、300万を超えるエンティティがあり、更新されたエンティティの1%のみがマークされるため、残りを0に設定してデータストアスペースの多くを無駄にしたくないということです。
python - getattr の問題を減らすための Pythonic ソリューション
以前は、"thisattr.thatattr.blaattar" IE のように連鎖的に属性を呼び出すためにreduce 関数とgetattr 関数を使用していました。
完全に正常に動作しますが、新しい要件があります。文字列は、「thisattr.thatattr[2].blaattar」などの特定の番号の属性を呼び出すことができます。
今は機能しませんxattr object has no attribute 'yattr[2]'
。エラーが発生します。
どちらの方法でも機能する、これに対するエレガントなソリューションは何でしょうか?
よろしく
python - __getattr__、newstyle クラスと oldstyle クラスの非対称動作
ここに書くのは初めてです、メッセージが的外れであったり、長すぎたりしたらすみません。
必要に応じてオブジェクトの属性がどのように取得されるかについて、もっと理解したいと思っていました。そこで、「Data Model」というタイトルの Python 2.7 のドキュメントを読んで、会って、その動作を理解している__getattr__
かどうかを確認するために、これらの単純な (そして不完全な) 文字列ラッパーを書きました。
ご覧のとおり、古いスタイルと新しいスタイルのクラスであることを除いて、それらは同じです。引用されたテキスト__getattr__
には「属性ルックアップで通常の場所に属性が見つからなかったときに呼び出される」と書かれているため、これらのクラスの 2 つのインスタンスで + 操作を試して、同じ動作を期待して何が起こったのかを確認したかったのです。
しかし、私が得た結果は私を少し当惑させました:
良い!のメソッドを定義していませんでした__coerce__
(ただし、 のリクエストを期待していましたが、気にしないでください__add__
:)、__getattr__
関与して役に立たないものを返しました。しかしその後
__getattr__
+ のような組み込み演算子を使用すると、古いスタイルのクラスと新しいスタイルのクラスの間でこの非対称の動作が発生するのはなぜですか? 誰かが何が起こっているのかを理解するのを手伝ってくれませんか? ドキュメントを読む際の私の間違いは何ですか?
どうもありがとう、あなたの助けが強く感謝されます!