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

c++ - Python getattr に相当する C++

Python には、次のような getattr という関数があります。

getattr を呼び出すと 4 が返されます。

C++ (Visual C++ ではない) でこれを行う同様の方法はありますか?

文字列を使用してオブジェクトのメンバー変数を検索できるこの機能を備えたライブラリはありますか?

変更できない C++ クラスのパブリック データ メンバーを検索する方法を見つけようとしています。したがって、マップを使用して文字列リテラルを値にマップすることはできません。たぶん、マクロを使った「unstringify」のようなものでしょうか?

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

python - gettattr 、Pythonの「属性は文字列でなければなりません」エラー

getattrジェネレーターを使用してコードで関数を使用しようとしています

エラー:

i で文字列強制を使用している場合、このエラーが表示されるのはなぜですか?

また、コードを使用すると

それからエラーはありません

私はpythonが初めてです。非常に初歩的な間違いを犯している場合は許してください。誰かがエラーについて詳しく説明してください。ありがとう

編集:このコードでも同じ原則が機能します(Dive into pythonの例です)。ここで、同じことが行われているのに、なぜエラーが発生しないのですか?

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

python - getattrを使用して変数パラメーターで関数を呼び出すPython

getattrを使用して、変数に応じてさまざまな関数を呼び出しています。

私はそのようなことをしています:

それは機能し、foo.bar()のような関数を呼び出します

私の問題は、「bar」関数があり、それを異なるパラメーターで呼び出したいということです。例えば:

したがって、「bar」はf1、f2、またはf3になります。

私はこれを試しました:paramsが「bar」関数に必要なすべてのパラメータを含むリストであると仮定します

params変数の長さを監視する必要がない「クリーンな」ソリューションを監視しています

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

python - クラスのサブクラスにプロパティとしてアクセスするにはどうすればよいですか?

そのため、サブクラスにプロパティとしてアクセスできるクラスを含む.pyファイルがあります。これらのサブクラスはすべて事前に定義されています。また、すべてのサブクラスが同じ機能を持っている必要があります(独自のサブクラスをプロパティとしてアクセスできるようにする)。私が直面している最大の問題は、の実装内で現在のクラスにアクセスする方法がわからないことです__getattr__()。そのため、ここから始めるのがよいでしょう。

これが私がこれまでに試したものを使ったPython+擬似コードです。__getattr__()クラスのインスタンスでのみ機能しているように見えるので、機能しないと確信しています。その場合、申し訳ありませんが、PythonでのOOPについてはあまり詳しくありません。

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

python - getattr を使用した Python でのクラスの混乱

同様の質問がここで尋ねられました。ただし、プログラムの一部がどのように機能するかを理解するのには、あまり役に立ちませんでした。プログラムは次のとおりです。

最初の質問は、以下がどのように機能するかです。

プログラムが必要な場所に移動できるように、次の方法で部屋の名前を生成していることを知っています。私はそれがどのように起こっているのか見ていません。

私の2番目の質問は次のとおりです。

self.pie が行っていることはある程度理解しています。しかし、 self.start = start が何を達成すると思われるかはわかりません。ご協力いただきありがとうございます。

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

python - 「スーパー」オブジェクトが __getattr__ を呼び出していない

あるオブジェクトを別のオブジェクトにラップしています。"Wrapper" は、 をオーバーライドすることによって、"Wrapped" オブジェクトの属性にアクセスします__getattr__。これは、サブクラスの属性をオーバーライドする必要があるまではうまく機能し、super().

から属性に直接アクセスできます__getattr__が、なぜ機能しsuper()ないのですか?

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

python - 「魔法のように」呼び出されたメソッドが見つからないために __getattr__ が呼び出されないのはなぜですか?

現在のクラスまたはその先祖に存在しない属性にアクセスしようとすると、メンバーからそれらの属性にアクセスしようとするクラスを実装しようとしています。以下は、私がやろうとしていることの簡単なバージョンです。

ただし、これによりTypeError. operatorモジュールのattrgetterクラスを使用しても同じことができます。属性アクセスのカスタマイズに関するドキュメントを見ていましたが、簡単に読めるものではありませんでした。どうすればこれを回避できますか?

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

python - Pythonでの動的メソッド生成

私は現在このコードを持っています:

これは次のようになります。

それを与えるために私は何をしなければなりませんか:

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

python - Pythonで動的属性を取得する

私は、3 つの異なる方法で名前を付けることができる疑似属性または特別な属性を持つオブジェクトを持っています (注: オブジェクトを生成するコードは制御しません)。

属性の値 (設定されている属性に応じて) はまったく同じであり、さらに処理するためにそれを取得する必要があるため、データのソースに応じて、次のようなものを使用できます。

また

また

取得に興味が'value'ありますが、残念ながら__dict__そのオブジェクトにはプロパティが存在しません。そのため、その値を取得するために私が行ったことは、一連のgetattr呼び出しを行うことでした。可能性が 3 つだけであると仮定すると、コードは次のようになります。

今、これにもっと良い方法があるかどうか知りたいですか?私は自分がやったことを100%確信しているので:)

前もって感謝します

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

python - python-動的に追加されたクラスの__getattr__をオーバーライドしようとしていますが、動作の種類のみです

実行時に既存のクラスに新しいクラスを追加しようとしています(「type(...)」を使用)。また、新しいクラスにない属性に対して独自の動作を実行できるように、その新しいクラスの__getattr__をオーバーライドしようとしています。たとえば、クラスfooがあり、クラス "tool"を追加し、foo.tool.testに独自の処理を実行させたいとします。以下のコードは機能しますが、部分的にしか機能しません。明示的に__getattr__を呼び出すと機能しますが(最初の印刷を参照)、foo.tool.testを参照すると、オーバーライドされた__getattr__が呼び出されず、属性エラーが発生します。

あなたの助けは大歓迎です。