[解決済み] オブジェクトのフィールドからPython辞書を生成する
2022-03-24 23:54:03
質問
任意のオブジェクトから辞書を構築するビルトイン関数をご存知でしょうか?こんなことをやってみたいのですが。
>>> class Foo:
... bar = 'hello'
... baz = 'world'
...
>>> f = Foo()
>>> props(f)
{ 'bar' : 'hello', 'baz' : 'world' }
NOTE メソッドを含んではいけません。フィールドのみです。
解決方法は?
Python 2.7でのベストプラクティスは 新スタイル クラス (Python 3 では不要)、すなわち
class Foo(object):
...
また、「オブジェクト」と「クラス」の違いもあります。任意の
オブジェクト
を使用すれば十分です。
__dict__
. 通常、メソッドはクラスレベルで、属性はインスタンスレベルで宣言します。
__dict__
でよいでしょう。例えば
>>> class A(object):
... def __init__(self):
... self.b = 1
... self.c = 2
... def do_nothing(self):
... pass
...
>>> a = A()
>>> a.__dict__
{'c': 2, 'b': 1}
より良い方法(提案された
ロバート
のコメントで)ビルトインの
vars
関数を使用します。
>>> vars(a)
{'c': 2, 'b': 1}
あるいは、やりたいことによっては
dict
. そうすると、あなたのクラスは
すでに
は辞書であり、必要であれば
getattr
および
setattr
を呼び出して、dictを設定します。例えば
class Foo(dict):
def __init__(self):
pass
def __getattr__(self, attr):
return self[attr]
# etc...
関連
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] 辞書を繰り返し使用するには?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] 辞書から要素を削除する
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
python implement mysql add delete check change サンプルコード
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み】オブジェクトのインスタンスを属性で比較し、同等性を確認する
-
[解決済み] Python で、クラスオブジェクトを dict にキャストするにはどうしたらいいですか?