問題タブ [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 - setattr() を使用して特別なメソッドを設定する
__getitem__
を使用してクラス インスタンスになどの特別なメソッドを動的に割り当てることは可能setattr()
ですか? たとえば、これがある場合:
そして、これを試してください:
私はこれを得る:
しかしもちろん、これは問題なく動作します:
Pythonがこの種のメソッド検索をどのように行うかについて、私には理解できないことが明らかにここで起こっています。これらのメソッドは、インスタンスではなくクラスに設定する必要がありますか?
更新:
したがって、クラスでこれを見ることができることを知っているよりも明確にする必要があります...インスタンスごとExample
に設定する方法があることを望んでいましたが、これまでに見たコンセンサスは、あなたはそれを行うことができないということです.
python - コンストラクターの外で属性の設定を制限するには?
クラスが初期化された後、クラスの一部の属性に対するそれ以上の割り当てを禁止したいと考えています。例えば; Person インスタンス 'p' が初期化された後は、誰も明示的に 'ssn' (社会保障番号) プロパティに値を割り当てることはできません。_ setattr _も_ init _メソッド内で値を割り当てている間に呼び出されているため、これは私が望むものではありません。今後の割り当てのみを制限したいと思います。どうすればそれを達成できますか?
python - 動的に名前が付けられた属性のゲッタープロパティを実行するためのより良い方法はありますか?
jsonデータをモデル化するクラスの1つに、同様のフィールドがいくつかあります。すべてのフィールドはNoneに初期化され、静的ツールが存在することを認識します。その後、ヘルパー関数は、モデリングしているjsonデータに基づいてフィールドを初期化するのに役立ちます(知りたい場合はSecondHandSongs API )。
一部のデータは、フェッチする必要のある余分なデータのURIのみを取得します。したがって、隠れた変数をNoneに初期化し、最初のリクエストでデータをフェッチ/デコードするという古いトリックを使用したいと思います。しかし、setattr(self.__class__)
醜いように見えます。
(Pythonでプロパティを動的に設定する)より良い方法はありますか?
編集: initから呼び出されたインスタンスメソッドにプロパティを設定しようとしていることに気づきました 。予想通り、2回目は失敗しました。
編集2:
オブジェクトごとにプロパティを設定していることに気付いた後、これを修正した方法は次のとおりです(シングルトンクラスでない場合は不可能です)
python - __setattr__ はコードを壊していますか?
ここに私が持っているコードがあります
オフィサーを作成しようとするたびに壊れます:
を定義するときに入力した名前が認識されないのはなぜhelo
ですか?
python - python/djangoでのsetattrとオブジェクトマニピュレーションの違い
私は次のモデルを持っています:
モデルを操作する方法はいくつかあります。
初め
2番
私がものを操作していたとき、ブール値の更新の観点から、最初の方法は機能しませんでしたが、2番目の方法は機能しました。1番目と2番目の使用の違いは何ですか、またいつ使用する必要がありますか?
ありがとう!
python - オブジェクト使用時のAttributeError。__setattr__
最後の3行の何が問題になっていますか?
単一の属性(fooなど)を持つオブジェクトが必要ですが、そのためだけにクラス(FooClassなど)を定義する必要がありますか?
python - pythonファイルに属性を設定するには?
クラスに属性を設定する方法は知っていますが、ファイルに設定する方法が見つかりません..
これは、動作します。
setattr() の API_tests をクラスではなくオブジェクトとしてのファイルに置き換えて、このファイルに関数 (test_generator X 4) が追加されるようにします。それらを動的に設定します。
コマンドラインで「nosetests -v」を実行すると、「4 つのテストに合格しました」と表示されると予想される結果です。
この質問は他の作品にある可能性があります:現在のファイルをオブジェクトとして取得する方法
ありがとう
python - 初期化後まで`__setattr__`を無効にするクリーンな方法
次のラッパークラスを作成しました。__setattr__
すべての属性をラップされたクラスにリダイレクトするように定義したいと思います。ただし、これにより、ラッパークラスを初期化できなくなります。これを修正するエレガントな方法はありますか?
python - Pythonでモックオブジェクトを作りたい
Python でインスタンス化し、setattr() を介してプログラムで属性を作成できるダミー オブジェクトが必要です。
組み込みオブジェクトで試してみましたが、おそらく正当な理由でうまくいきませんでした。
実際に自分で定義せずに、そのような目的でPythonで使用できる基本オブジェクトは何ですか?
python - `setattr` (および `getattr`) の使用は悪い習慣と見なすことができますか?
setattr
そしてgetattr
、私のプログラミングスタイルに入りました(主に科学的なもので、Pythonに関する私の知識は独学です)。
場合によってはセキュリティ上の問題につながる可能性があるため、潜在的な危険を継承することを考慮するexec
と、同じ議論が有効であると見なされるかどうか疑問に思っていました. (私はいくつかの情報を含むこの質問を見つけました-議論はあまり説得力がありませんが。)eval
setattr
getattr
私の知る限り、setattr
あまり気にせずに使用できますが、正直なところ、Python の知識を十分に信頼していません。間違っている場合は、使用する習慣を取り除きたいと思います。setattr
.
どんな入力でも大歓迎です!