問題タブ [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.

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

python - Pythonのgetattrを広範囲に使用するのは悪い習慣ですか?

シェルのような環境を作成しています。ユーザー入力を処理する私の元の方法は、関数がPythonのファーストクラスオブジェクトであるという事実を利用して、さまざまなクラスのメソッドにコマンド(文字列)をマッピングする辞書を使用することでした。

柔軟性のために(主にコマンドの解析のために)、getattr(command)を使用するようにセットアップを変更し、必要なメソッドを取得して、パーサーの最後に引数を渡すことを考えています。このアプローチのもう1つの利点は、新しいメソッド/コマンドを追加するたびに(現在静的に実装されている)コマンドディクショナリを更新する必要がないことです。

私の質問は2つあります。まず、getattrにはevalと同じ問題がありますか?第二に、シェルの効率に打撃を与えるでしょうか?私が持っているメソッド/コマンドの数は重要ですか?現在、30個のコマンドを調べていますが、最終的には2倍になる可能性があります。

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

python - Python で getattr を使用してメソッドを呼び出す

getattr を使用してメソッドを呼び出す方法は? 「oposite_」という単語で始まる他のクラスの存在しないメソッドを呼び出すことができるメタクラスを作成したいと考えています。メソッドは同じ数の引数を持つ必要がありますが、反対の結果を返す必要があります。

しかし、問題は

NoneType オブジェクトを返します。

これに対処する方法は?

0 投票する
4 に答える
62748 参照

python - 現在のモジュールでsetattr()を呼び出すにはどうすればよいですか?

現在のモジュールに変数を設定するために、最初のパラメーター " object"として関数に何を渡しますか?setattr(object, name, value)

例えば:

と同じ効果を与える:

これらの行を含むモジュール内(正しいobject)。

モジュールレベルで動的にいくつかの値を生成しますが、モジュールレベルで定義できないため__getattr__、これがフォールバックです。

0 投票する
5 に答える
12979 参照

python - インデックス アクセスだけでなく、属性を介して dict に再帰的にアクセスしますか?

私はこのようなことをしたいと思います:

私の動機は、コードの簡潔さを改善することであり、可能であれば Javascript と同様の構文を使用して JSON オブジェクトにアクセスし、効率的なクロスプラットフォーム開発を行うことです。(Py2JSなども使用しています。)

0 投票する
5 に答える
34781 参照

python - Python の静的/クラス変数の __getattr__

私は次のようなクラスを持っています:

MyClass.FooorMyClass.Barが呼び出されるたびに、値が返される前にカスタム メソッドを呼び出す必要があります。Pythonで可能ですか?__getattr__クラスのインスタンスを作成し、独自のメソッドを定義できれば、それが可能であることはわかっています。しかし、私のシナリオでは、このクラスをインスタンスを作成せずにそのまま使用します。

また、呼び出されたときに呼び出されるカスタム__str__メソッドが必要str(MyClass.Foo)です。Python はそのようなオプションを提供していますか?

0 投票する
8 に答える
175204 参照

python - __getattr__と__getattribute__の違い

__getattr__いつ使用するか、またはを理解しようとしています__getattribute__。記載されているドキュメント__getattribute__、新しいスタイルのクラスに適用されます。新しいスタイルのクラスとは何ですか?

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

python - 文字列としてのPythonチェーンgetattr

オブジェクトのチェーン属性呼び出しを文字列として実行するために、上記の不器用なスニペットを開発する必要がありました。これに対してもっと賢くて効率的な解決策があるかどうか私は興味があります。

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

database - App Engine Datastoreでプロパティが欠落しているエンティティをクエリしますか?

私はこのようなモデルを持っています:

これで、値を保存するときに、更新されたプロパティの値を毎回入力できない場合があります。これは、一部のエンティティでは値が存在しない可能性があることを意味します。

プロパティが更新されていないExampleの種類のすべてのエンティティを取得できるように、データストアクエリを作成したいと思います。

どうすればこれを行うことができますか?

ps私はデフォルト値を設定し、それを照会できることを知っています。しかし、問題は、300万を超えるエンティティがあり、更新されたエンティティの1%のみがマークされるため、残りを0に設定してデータストアスペースの多くを無駄にしたくないということです。

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

python - getattr の問題を減らすための Pythonic ソリューション

以前は、"thisattr.thatattr.blaattar" IE のように連鎖的に属性を呼び出すためにreduce 関数とgetattr 関数を使用していました。

完全に正常に動作しますが、新しい要件があります。文字列は、「thisattr.thatattr[2].blaattar」などの特定の番号の属性を呼び出すことができます。

今は機能しませんxattr object has no attribute 'yattr[2]'。エラーが発生します。

どちらの方法でも機能する、これに対するエレガントなソリューションは何でしょうか?

よろしく

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

python - __getattr__、newstyle クラスと oldstyle クラスの非対称動作

ここに書くのは初めてです、メッセージが的外れであったり、長すぎたりしたらすみません。

必要に応じてオブジェクトの属性がどのように取得されるかについて、もっと理解したいと思っていました。そこで、「Data Model」というタイトルの Python 2.7 のドキュメントを読んで、会って、その動作を理解している__getattr__かどうかを確認するために、これらの単純な (そして不完全な) 文字列ラッパーを書きました。

ご覧のとおり、古いスタイルと新しいスタイルのクラスであることを除いて、それらは同じです。引用されたテキスト__getattr__には「属性ルックアップで通常の場所に属性が見つからなかったときに呼び出される」と書かれているため、これらのクラスの 2 つのインスタンスで + 操作を試して、同じ動作を期待して何が起こったのかを確認したかったのです。

しかし、私が得た結果は私を少し当惑させました:

良い!のメソッドを定義していませんでした__coerce__(ただし、 のリクエストを期待していましたが、気にしないでください__add__:)、__getattr__関与して役に立たないものを返しました。しかしその後

__getattr__+ のような組み込み演算子を使用すると、古いスタイルのクラスと新しいスタイルのクラスの間でこの非対称の動作が発生するのはなぜですか? 誰かが何が起こっているのかを理解するのを手伝ってくれませんか? ドキュメントを読む際の私の間違いは何ですか?

どうもありがとう、あなたの助けが強く感謝されます!