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

android - Android ファイルに拡張ユーザー属性を設定するにはどうすればよいですか?

Android アプリでファイルの拡張ユーザー属性を取得して設定する方法はありますか? java.nio.file.FilesAndroidで使用する方法はありますか?私のdalvikアプリから使用する方法はありますsetfattrか ? getfattrAndroidがext4ファイルシステムを使用していることは知っているので、可能だと思います。助言がありますか?

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

python - ネストされた辞書を操作するための Python の再帰的な setattr() のような関数

次のような、ネストされた辞書構造を解析するための getattr() のような優れた関数が多数あります。

並列の setattr() を作成したいと思います。基本的に、与えられた:

割り当てることができるような関数を作成したいと思います:

多かれ少なかれ、これは次と同じように機能します。

得た:

私は現在それを呼んでいsetByDot()ます:

これに関する 1 つの問題は、中間のキーが存在しない場合、存在しない場合は中間キーを確認して作成する必要があることです。つまり、上記の場合:

したがって、最初に以下を作成する必要があります。

もう 1 つは、次の項目がリストの場合のキーイングは、次の項目が文字列の場合のキーイングとは異なります。つまり、次のようになります。

...割り当てがnull dictではなくnull文字列用だったため、失敗します。null dict は、リストまたは値である最後のものまで、dict 内のすべての非リストの正しい割り当てになります。

以下の @TokenMacGuy のコメントで指摘された 2 番目の問題は、存在しないリストを作成する必要がある場合、非常に多くの空白の値を作成する必要がある場合があることです。そう、

---アルゴリズムが次のような中間体を作成する必要があることを意味する場合があります。

得た

これがゲッターに関連付けられたセッターであるように...

さらに重要なことに、中間体は既に存在する値を上書き/しない/上書きすべきではありません。

以下は、私がこれまでに持っていた厄介なアイデアです---リストと辞書やその他のデータ型を識別し、それらが存在しない場所に作成できます。ただし、(a) 再帰呼び出しを配置する場所、または (b) リストを反復処理するときにディープ オブジェクトを「構築」する方法、および (c) /probing/ を区別する方法がわかりません。 /setting/ から深いオブジェクトを構築するのと同じように、スタックの最後に到達したときに行う必要があります。

プレースホルダーを作成している場合、 /next/ オブジェクトのタイプを確認するために先読みする必要があり、パスを作成するために後読みする必要があるため、これは非常に注意が必要です。

アップデート

私も最近この質問に答えてもらいました。これは関連性があるか、役立つかもしれません。

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

python - インスタンス化時にPythonのインスタンスに関数を動的に追加するにはどうすればよいですか

インスタンス化時にオプション パラメータを許可する python クラスがある場合、そのオプション パラメータの値に基づいて、動的に関数を設定するにはどうすればよいですか。たとえば、コードがある場合

トレースバック エラーが発生する

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

python - Python dicts への切り替え可能なドット アクセス?

辞書のドット アクセスのトグル可能なバージョンはまだ見たことがありません。

ここでの最初のパスの試みは機能しません:

setattr と setitem の間で署名が一致していないと思います。

私の 2 番目のパスも機能するはずですが、同じように失敗します。

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

python - object.attribute を記述する Python 文字列が与えられた場合、属性の名前空間を属性から分離するにはどうすればよいですか?

object.attribute を記述する Python 文字列が与えられた場合、属性の名前空間を属性から分離するにはどうすればよいですか?

望ましい例:

注: 独自の文字列パーサーを作成することも 1 つの選択肢であることは理解していますが、これに対するより洗練された解決策を探しています。独自の文字列パーサーをロールすることは、「.」の rsplit ほど単純ではありません。特定のキーワードに名前空間区切り文字が含まれる可能性がある上記の最後のオプションのためです。

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

python - インポートされたモジュール内で属性を設定するときのパスのインポートを修正

短くするために、これを行うモジュールがあります。

mymodule.py

したがって、MyModule フォルダー内にある場合、シェルを開くと、次のように動作します。

しかし、私が MyModule フォルダーの外にある場合は、次のようにします。

私が得る: 、私はそれがどこか別の場所に設定されて'module' object has no attribute 'VarA'いるために起こっていると思います。setattrVarAVarA

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

python - 関数をクラスに追加する exec

だから私は同様の質問を見て、これに対するいくつかの解決策を見つけましたが、これを行う方法がよくわかりません.

私がやろうとしているのは、文字列からクラスにメソッドを追加することです。メソッドでこれを行うことができますが、追加のメソッドで属性としてsetattr()使用することはできません。self以下に例を示します: (変数名については申し訳ありませんが、アイデアをモックアップするときは常に yolo を使用します)

これを返します:

そして、次のs = 'def yolo():\n\tself.extra = "Hello"\n\tprint self.extra' 結果が得られた場合:

これは基本的に、クラスのメソッドを動的に作成できないことを意味します。これは、クラスの残りの部分がアクセスできる変数にメソッドがアクセスできないため、悪い習慣であり、pythonic ではないことがわかっています。

助けていただければ幸いです。

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

python - __slots__ を持つクラスで __setattr__() を定義できますか?

を定義するクラスがあるとします__slots__:

それを定義できます__setattr__()か?

Fooがないので、__dict__何を更新しますか?

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

python - Pythonの新しいスタイルオブジェクトで__setattr__を使用している間の最大再帰深度?

個人クラスと個人クラスに委譲する Manager クラスで構成される次のコードがあります。私はnew style object(から派生したobject)を使用しており、python 2.7を実行しています。理解できない最大の再帰深度を取得します。setattrを使用すると問題が発生することはわかっています(これをマネージャー クラスでコメントアウトすると、問題なく動作することがわかります)。この再帰が発生する理由とそれを回避する方法。