問題タブ [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 が失敗するのはなぜですか
以下でsetattr
は、最初の呼び出しで成功しますが、2 番目の呼び出しで失敗します。
これはなぜですか? また、クラスのインスタンスごとではなく、1 つのインスタンスにのみ存在するようにメソッドに属性を設定する方法はありますか?
パイソン 3.2.2
python - python koans: クラスプロキシ
私はpython koans を解決しています。34日までは何の問題もありません。
これが問題です:
プロジェクト: プロキシ クラスを作成する
この課題では、プロキシ クラスを作成します (1 つを以下で開始します)。任意のオブジェクトでプロキシ オブジェクトを初期化できる必要があります。プロキシ オブジェクトで呼び出された属性はすべて、ターゲット オブジェクトに転送する必要があります。各属性呼び出しが送信されると、プロキシは送信された属性の名前を記録する必要があります。
プロキシ クラスが開始されます。メソッド欠落ハンドラーとその他のサポート メソッドを追加する必要があります。Proxy クラスの仕様は AboutProxyObjectProject koan に記載されています。
注: これは、Ruby Koans の対応物であることに比べて少しトリッキーですが、実行できます。
これが今までの私の解決策です:
このテストまで機能します:
tv.messages()
は、テレビ オブジェクトではなく、プロキシ オブジェクトによって取得されるため['power']
です。
メソッドを操作しようとしましたが、常に無限ループに陥ります。tv.channel=10
__setattr__
編集1:
私はこれを試しています:
しかし、最後のエントリのループでこのエラーが発生します。
ループは にあり__getattr__
ます。
python - __setattr__ オブジェクトの属性に見つからない名前のみ?
__setattr__
のように、オブジェクトの属性に属性が見つからなかった場合にのみ使用したい__getattr__
。
本当にtry-exceptを使用する必要がありますか?
python - __setattr__ メソッドのオーバーライドを解除するには?
この質問の目的は、「組み込み」が Python の組み込み関数である方法を理解することです。
setattr メソッドをオーバーライドした場合、どうすれば元に戻すことができますか? たとえば、次のような「Working」クラスがあります。
そして、クラス「NonWorking」は次のようになります。
次に、オブジェクト w と n を作成し、次を実行します。
出力は次のとおりです。
na は "b" を出力するはずですが、setattr は属性を変更しないため、"a" を出力することに注意してください。
問題は、オブジェクトwのように機能するように、オブジェクトnをどのように変更すればよいかということです。クラスではなく、オブジェクトを意味していることに注意してください。
python - GetAttr関数の問題(Python 3)
Pythonスクリプトには次のものがあります。
これにより、次のエラーが発生します。
誰かがここで何が問題なのか教えてもらえますか?
python - __setattr__ クラス デコレータ python
クラスデコレータを使用していますが、 setattrで属性を設定する方法がわかりませんでした。これが私のコードです:
しかし、私がするとき:
私はこの出力を持っています:
この出力を得るにはどうすればよいですか?
python - データストアとしてのPythonクラス
ある種のデータストアのように機能するPythonクラスを作成しようとしています。したがって、たとえば辞書を使用する代わりに、class.fooとしてデータにアクセスし、dataclassのxの場合と同様に、データを反復処理するなど、すべての優れた処理を実行できるようにします。
以下は私が思いついたものです:
そして、どうやらそれは動作します。やったー!しかし、属性の設定を正しく実装するにはどうすればよいですか?以下を追加すると、再帰制限が発生し__getattr__
ます。
ドキュメントを読んで、再帰を避けるためにスーパークラス(オブジェクト)__setattr__
メソッドを呼び出す必要がありますが、そうすると、self._datadictを制御できなくなります。
誰かが私を正しい方向に向けることができますか?
python - Pythonでsetattr()を使用する
使用ではなく、使い方の基本を説明してくれる人を探していますsetattr()
。
私の問題は、あるクラスのメソッド/関数を使用してデータを返し、それを別のメソッド/関数に入れようとしたときに発生しました。この場合、おそらくより単純なアプローチの方がはるかに優れていますが、クラスがどのように機能するか/使用されるかを理解しようとしています。この問題はにかかっているようですsetattr()
。これは、これをかなり簡単に使用するための私の試みです。
まったく同じ問題ではありませんが、Python The Hard Way、ex42 —while
ループ@行18〜41をフォローしていました。
を書いて、代わりに、クラスの名前空間に何かが必要だと考え\__init__()
て使用してみましたが、これは役に立たないようです。getattr()
@ Karl Knechtel、@ Amber、@ChrisMorganご協力いただきありがとうございます。
自分の答えを説明できるようになったと思います!これには、私にとっての対象としての自己のより良い把握が必要でした。これは、属性などでタグ付けされるインスタンス名です。
クラスは町である可能性があります。
getattr
その名前を使って家を探すので、すぐに電話をかける準備ができています。家が見つからない場合は別の場所を考え出しますgetattr
。「名前」が存在するので、見つけに行きます。ある関数から別の関数へのステップを動的にしますボーナスとして、デフォルト値があり、フォールバックのデフォルトメソッドを取得するのに役立ちます-接続が失敗したか何か?
setattr
家を建てて名前を付け、後で呼び出すことができるようにします。この家を建て直すか、見つからない場合は特定の場所に行く可能性があります。--setattr
属性名を作成し、後で呼び出されるようにその値を指定または変更します。おそらく、ユーザーがサウンドをオフにすると、将来のメソッドはオーディオを出力しません。
関数をさまざまな方法で作成できましたが、属性を変更する必要はありません。
適切に修正されたコード:
python - setattr、オブジェクトの削除、循環ガベージ コレクション
オブジェクトの削除が Python でどのように機能するかを理解したいと思います。これは非常に単純なコードの集まりです。
Pythonista は、Python 2.x バージョンを実行していることを認識します。さらに具体的には、このコードは python 2.7.1 セットアップで実行されます。
このコードは次を出力します。
驚いたことに、A
オブジェクトは削除されません。setattr
のステートメントは__init__
循環参照を生成するため、その理由は理解できます。しかし、これは簡単に解決できそうです。
最後に、Python ドキュメント (Supporting Cyclic Garbage Collection)のこのページは、この種の循環参照を処理できることを示しています。
私が知りたいのですが:
- クラス
__del__
でメソッドを実行しないのはなぜですか?A
- 循環参照に関する私の診断が正しい場合、
object
サブクラスが循環ガベージ コレクションをサポートしていないのはなぜですか? - 最後に、本当に行きたい
setattr
場合、この種の対処方法は?__del__
注:がモジュールの別のメソッドを指しているA
場合、問題はありません。setattr
python - オブジェクト内のプライベート変数に到達するにはどうすればよいですか?
オブジェクトのプライベート変数を変更したい
上記のコードを試しましたが、プライベート変数に到達できないようですが、
プライベート変数を変更する方法はありますか?