問題タブ [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 投票する
1 に答える
4723 参照

android - 属性値を取得するための XML 解析

SAX パーサーを使用して xml を解析しています。取得する必要があるデータが xml タグの本体である場合、すべてが正常に機能します。私が得ている唯一の問題は、必要なデータがその XML タグの属性値である場合です。この属性値を取得するにはどうすればよいですか?

これがタグであるとします。ボディは取得できますが、値は取得できません

私が使用しているコードは次のとおりです。

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

python - Pythonにハイブリッドgetattr+__getitem__が組み込まれていないのはなぜですか?

dictやその他のオブジェクトを受け入れるメソッドと、それらのオブジェクトからフェッチする「フィールド」の名前があります。オブジェクトがdictの場合、メソッドは__getitem__名前付きキーを取得するために使用します。そうでない場合はgetattr、名前付き属性を取得するために使用します。これは、Webテンプレート言語ではかなり一般的です。たとえば、カメレオンテンプレートでは、次のようになります。

fooのようなdictとして渡す場合は、「keyname」キーをフェッチして「bar」を取得します{'keyname':'bar'}。が次のようなクラスのインスタンスである場合foo.keynamefoo

次にfoo.keyname、属性から値をフェッチしkeynameます。カメレオン自体は、次のchameleon.py26ようにその機能を(モジュール内で)実装します。

私はそれを次のような自分のパッケージに実装しました:

問題は、それはかなり一般的なパターンです。多くのモジュールで、その方法またはそれに非常によく似た方法を見てきました。では、なぜ言語のコア、または少なくともコアモジュールの1つにそのようなものがないのですか?それができない場合、それをどのように書くべきかについての決定的な方法はありますか?

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

python - Pythonでgetattr/setattrを使用してリストアイテムにアクセスする

Pythonでgetattr関数とsetattr関数を使用してリスト内のアイテムにアクセス/割り当てようとしています。残念ながら、リスト名とともにリストインデックス内の場所を渡す方法はないようです。
これがいくつかのサンプルコードでの私の試みのいくつかです:

また、attr関数の2番目の引数では、この関数で文字列と整数を連結できないことに注意してください。

乾杯

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

python - この __getattr__ 関数が機能しないのはなぜですか?

カスタム メソッドを試してみるために作成したこの小さなクラスが__getattr__あり、それを実行するたびに属性エラーが発生します。

出力は次のとおりです。

何を与える?属性エラーが発生する前にgetattrが呼び出されたと思いましたか?

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

python - Python - __getattr__ の影響を受けない属性を定義する方法は?

私はPythonにかなり慣れていません。__get最近、多くの PHP をプログラミングする中で、__set「魔法の」メソッドをクリエイティブに使用することに慣れてきました。これらは、クラスのパブリック変数が存在しない場合にのみ呼び出されました。

Python で同じ動作を再現しようとしていますが、惨めに失敗しているようです。C++/PHP の方法でクラス変数を実際に定義する方法がないように思われる場合、クラス内で (つまり、self を介して) 普通に変数を使用しようとすると、__getattr__!が呼び出されます。

影響を受けたくないクラスの属性を定義するにはどうすればよい__getattr__ですか?

私がやろうとしていることのサンプルコードを以下に示しself.Documentます.self.Filename__getattr__

助けてくれてありがとう!

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

python - __getattribute__ または __getattr__ を使用して Python でメソッドを呼び出す

カスタム クラスのリストとして機能するサブクラスを作成しようとしています。ただし、リストが親クラスのメソッドと属性を継承し、各アイテムの数量の合計を返すようにしたいと考えています。メソッドを使用してこれを実行しようとしています__getattribute__が、呼び出し可能な属性に引数を渡す方法がわかりません。以下の非常に単純化されたコードは、より明確に説明する必要があります。

実際には、呼び出し可能でなければならない親クラスのメソッドがたくさんあります。リストのようなサブクラスのそれぞれを手動でオーバーライドできることはわかっていますが、将来、親クラスにさらにメソッドが追加される可能性があり、動的システムが必要なため、それは避けたいと思います。アドバイスや提案をいただければ幸いです。ありがとう!

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

python - Python - getattr と連結

したがって、コードで getattr をいじってみると、次のことがわかりました。

動作します...しかし、次のようなもの:

foo に属性 A.bar が含まれていないというエラーを返します。どこが間違っていますか?ありがとう!

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

python - __getattr__問題でevalグローバルをオーバーライドする

存在しない属性名がそれ自体(名前文字列)を返すように、グローバルをオーバーライドしようとしています。この理由は、evalでそれを使用して、acイニシライザーリストのいくつかの迅速でハッキーな解析を行うためです(そしてもちろん)。私のコード:

存在しない名前を評価しようとすると、NameErrorが発生します

そして、私が直接電話しようとすると

有効な属性であっても、属性名の文字列のみが返されます。私は何が間違っているのですか?

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

python - __getattr__ 内から着信引数を検査する方法、または何らかの方法で着信引数に基づいて呼び出しをリダイレクトする方法はありますか?

背景: トランザクションの請求先の国に基づいてフローを分割するトランザクションのシステムがあります。2 つのインスタンスに存在するロギング テーブルがあります。1 つの DB は EU にトランザクションを記録し、もう 1 つは他の場所にトランザクションを記録します。大まかに言えば、各テーブルがクラスによって表される DB を操作する根性を管理および非表示にするテスト ライブラリもあります。テーブルを表すクラスがあり、db セッション マネージャー クラスには、クラスの 2 つのインスタンスのそれぞれに対して 2 つのメンバーがあります。私がやりたいことは、任意の呼び出しを受け取り、引数を検査し、入力引数の 1 つに基づいて、呼び出しを正しい db インスタンスを表すクラス インスタンスにディスパッチする汎用の「メタ ダオ」クラスを作成することです。最初はすべてのメソッドをオーバーロードすることだけを考えていましたが、それは'

__getattr__メソッドルックアップをオーバーライドして、受信したメソッドの名前に基づいて正しいインスタンスを呼び出すことができるようにすることを検討していまし__getattr__たが、私が理解していることinspectから、内から着信メソッド引数を取得できない__getattr__ため、この場合、その中から適切にディスパッチしないでください。私が追求できる別の方向性、またはメソッド名だけでなく、内部から引数を「検査」する方法についてのアイデアはあります__getattr__か?

[編集] これが私が話していることの一般化されたバージョンです:

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

php - Python の魔法 __getattr__() に対する PHP のアプローチ

PHP に、Python の属性/キー アクセスの魔法の一部を複製する方法があるかどうか疑問に思っていました。

私は、 Steve Laceyによって書かれたMinimongoと呼ばれるMongo ORM クラスを使用します。このクラスでは、 __getattr__andを利用して__getitem__キーと属性のフレーバー アクセスを再ルーティングし、Mongo の「ドキュメント指向」の性質を維持します。 val = doc.fooval = doc['foo']等価になります。

それを継承するクラスのオブジェクトアクセスの処理方法を変更できる同様のインターフェースがPHPにあるかどうか疑問に思っていました。私は STL を調べましたが、スーツを埋めたものは見つかりませんでした。デフォルトを設定するのに非常に役立ちます。ありがとう。