問題タブ [setattr]
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を使用して、クラスにプロパティを作成したいのですが、その名前を文字列にしています。通常、次のようにします。
get_、set_、および del_blah は適宜定義されています。次のように、変数のプロパティの名前で同じことを試みました。
しかし、それはうまくいきません。最初のケースではプロパティの値が返され、2 番目のケースではプロパティ、つまり が返されます<property object at 0xbb1aa0>
。機能するように定義するにはどうすればよいですか?
python - Python __init__ setattr on arguments?
多くの場合、__init__
メソッドはこれに似ているようです。
*args
引数を(またはに頼らずに)リストに変換し、パラメーターの名前と渡された引数を使用してインスタンス変数を設定するため**kwargs
に使用する方法はありますか?そして多分リストをスライスします、例えばあなたが望まないのであなたはsetattr
少なくともそれをスライスする必要があるでしょう。[1:]
self.self
(実際には、名前と値を保持するための辞書である必要があると思います)
このような:
ありがとう!
不明の答えに答えて、私はこれがうまくいくことを発見しました:
また
悪くない..
python - Jython 2.1 __getattr__
jython v2.1 で Java オブジェクト (baseClient) のラッパー/プロキシ クラスを実装しようとしています。次のステートメントが発生した場合を除いて、すべてが正常に機能しているようです。
raise AttributeError(attr)
属性がない__getattr__()
ため、で呼び出されます。jython はシステムの一部であるため、アップグレードできないことに注意してください。この問題を回避する方法はありますか?self.__baseClient
__ne__
どうもありがとう!
python - オーバーライドされた属性アクセスが機能しない(期待どおり)
次のモジュールの主な目的は、いくつかの名前に一種の「一定の」セマンティクスを提供することです。
使用時:
それでone
、two
そこにありますが、属性アクセスは期待外れです:
この場合、私が期待1
したところ。私はどこが間違っていますか?
python - __setattr__の「name」パラメータにクラスが含まれているのに__getattr__が含まれていないのはなぜですか?
次のコード:
出力:
「名前」が「属性の名前」であると記載されているドキュメントはまったく役に立ちませんが、何らかの理由で、設定するか取得するかによって異なります。
私が知りたいのは:
- 私はここで根本的に間違ったことをしていますか?
x
代わりに最初のケースを取得するにはどうすればよい_MyClass__x
ですか?
python - クラスの定義中にPythonで指定された名前のクラス属性を設定する
私はこのようなことをしようとしています:
setattr
しかし、クラス定義で変数を割り当てるのと同じように動作させるためのクラスへの参照が見つからないようです。これどうやってするの?
python - 現在のモジュールでsetattr()を呼び出すにはどうすればよいですか?
現在のモジュールに変数を設定するために、最初のパラメーター " object
"として関数に何を渡しますか?setattr(object, name, value)
例えば:
と同じ効果を与える:
これらの行を含むモジュール内(正しいobject
)。
モジュールレベルで動的にいくつかの値を生成しますが、モジュールレベルで定義できないため__getattr__
、これがフォールバックです。
python - __setattr__ を経由せずにクラス属性を作成する
以下にあるのは、一連のデータを属性として簡単に保存するために作成したクラスです。それらは辞書に格納されてしまいます。と をオーバーライド__getattr__
し__setattr__
て、さまざまな種類の単位で値を保存および取得します。オーバーライドを開始したとき__setattr__
、2行目の最初の辞書を作成するのに問題がありました__init__
...
super(MyDataFile, self).__setattr__('_data', {})
私の質問...
を介してクラスレベルの属性を作成する簡単な方法はあります__setattr__
か? また、別の辞書を保持することを心配する必要がありますか、それともすべてをに保存する必要がありself.__dict__
ますか?
google-app-engine - App Engineモデルで属性に動的に名前を付けることは可能ですか?
setattr
Pythonクラスの属性に動的に名前を付けることができます。AppEngineモデルで同様のことをしようとしています。
このコードはコンパイルされますが、model.prop1.append(key)
後で呼び出すと、次のエラーが発生します。
これは、prop1
がではなくモデルで宣言されているためself.prop1
だと思いますが、構文の重要性を完全には理解していません。
誰かがこれを達成しましたか、または誰かが構文の違いについて何か洞察を持っていますか?