問題タブ [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.

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

python - バインドされたメソッドで setattr が失敗するのはなぜですか

以下でsetattrは、最初の呼び出しで成功しますが、2 番目の呼び出しで失敗します。

これはなぜですか? また、クラスのインスタンスごとではなく、1 つのインスタンスにのみ存在するようにメソッドに属性を設定する方法はありますか?

パイソン 3.2.2

0 投票する
7 に答える
3477 参照

python - python koans: クラスプロキシ

私はpython koans を解決しています。34日までは何の問題もありません。

これが問題です:

プロジェクト: プロキシ クラスを作成する

この課題では、プロキシ クラスを作成します (1 つを以下で開始します)。任意のオブジェクトでプロキシ オブジェクトを初期化できる必要があります。プロキシ オブジェクトで呼び出された属性はすべて、ターゲット オブジェクトに転送する必要があります。各属性呼び出しが送信されると、プロキシは送信された属性の名前を記録する必要があります。

プロキシ クラスが開始されます。メソッド欠落ハンドラーとその他のサポート メソッドを追加する必要があります。Proxy クラスの仕様は AboutProxyObjectProject koan に記載されています。

注: これは、Ruby Koans の対応物であることに比べて少しトリッキーですが、実行できます。

これが今までの私の解決策です:

このテストまで機能します:

tv.messages()は、テレビ オブジェクトではなく、プロキシ オブジェクトによって取得されるため['power']です。 メソッドを操作しようとしましたが、常に無限ループに陥ります。tv.channel=10
__setattr__

編集1:

私はこれを試しています:

しかし、最後のエントリのループでこのエラーが発生します。

ループは にあり__getattr__ます。

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

python - __setattr__ オブジェクトの属性に見つからない名前のみ?

__setattr__のように、オブジェクトの属性に属性が見つからなかった場合にのみ使用したい__getattr__

本当にtry-exceptを使用する必要がありますか?

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

python - __setattr__ メソッドのオーバーライドを解除するには?

この質問の目的は、「組み込み」が Python の組み込み関数である方法を理解することです。

setattr メソッドをオーバーライドした場合、どうすれば元に戻すことができますか? たとえば、次のような「Working」クラスがあります。

そして、クラス「NonWorking」は次のようになります。

次に、オブジェクト w と n を作成し、次を実行します。

出力は次のとおりです。

na は "b" を出力するはずですが、setattr は属性を変更しないため、"a" を出力することに注意してください。

問題は、オブジェクトwのように機能するように、オブジェクトnをどのように変更すればよいかということです。クラスではなく、オブジェクトを意味していることに注意してください。

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

python - GetAttr関数の問題(Python 3)

Pythonスクリプトには次のものがあります。

これにより、次のエラーが発生します。

誰かがここで何が問題なのか教えてもらえますか?

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

python - __setattr__ クラス デコレータ python

クラスデコレータを使用していますが、 setattrで属性を設定する方法がわかりませんでした。これが私のコードです:

しかし、私がするとき:

私はこの出力を持っています:

この出力を得るにはどうすればよいですか?

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

python - データストアとしてのPythonクラス

ある種のデータストアのように機能するPythonクラスを作成しようとしています。したがって、たとえば辞書を使用する代わりに、class.fooとしてデータにアクセスし、dataclassのxの場合と同様に、データを反復処理するなど、すべての優れた処理を実行できるようにします。

以下は私が思いついたものです:

そして、どうやらそれは動作します。やったー!しかし、属性の設定を正しく実装するにはどうすればよいですか?以下を追加すると、再帰制限が発生し__getattr__ます。

ドキュメントを読んで、再帰を避けるためにスーパークラス(オブジェクト)__setattr__メソッドを呼び出す必要がありますが、そうすると、self._datadictを制御できなくなります。

誰かが私を正しい方向に向けることができますか?

0 投票する
6 に答える
184104 参照

python - Pythonでsetattr()を使用する

使用ではなく、使い方の基本を説明してくれる人を探していますsetattr()

私の問題は、あるクラスのメソッド/関数を使用してデータを返し、それを別のメソッド/関数に入れようとしたときに発生しました。この場合、おそらくより単純なアプローチの方がはるかに優れていますが、クラスがどのように機能するか/使用されるかを理解しようとしています。この問題はにかかっているようですsetattr()。これは、これをかなり簡単に使用するための私の試みです。

まったく同じ問題ではありませんが、Python The Hard Way、ex42whileループ@行18〜41をフォローしていました。

を書いて、代わりに、クラスの名前空間に何かが必要だと考え\__init__()て使用してみましたが、これは役に立たないようです。getattr()


@ Karl Knechtel、@ Amber、@ChrisMorganご協力いただきありがとうございます。

自分の答えを説明できるようになったと思います!これには、私にとっての対象としての自己のより良い把握が必要でした。これは、属性などでタグ付けされるインスタンス名です。

クラスは町である可能性があります。 getattrその名前を使って家を探すので、すぐに電話をかける準備ができています。家が見つからない場合は別の場所を考え出しますgetattr。「名前」が存在するので、見つけに行きます。ある関数から別の関数へのステップを動的にしますボーナスとして、デフォルト値があり、フォールバックのデフォルトメソッドを取得するのに役立ちます-接続が失敗したか何か?

setattr家を建てて名前を付け、後で呼び出すことができるようにします。この家を建て直すか、見つからない場合は特定の場所に行く可能性があります。--setattr属性名を作成し、後で呼び出されるようにその値を指定または変更します。おそらく、ユーザーがサウンドをオフにすると、将来のメソッドはオーディオを出力しません。

関数をさまざまな方法で作成できましたが、属性を変更する必要はありません。

適切に修正されたコード:

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

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

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

python - オブジェクト内のプライベート変数に到達するにはどうすればよいですか?

オブジェクトのプライベート変数を変更したい

上記のコードを試しましたが、プライベート変数に到達できないようですが、

プライベート変数を変更する方法はありますか?