pythonで、クラスオブジェクトをdictにキャストするにはどうすればよいですか?

| | | | | | |

Pythonで単純なクラスを取得したとしましょう

  class Wharrgarbl(object):def __init __(self、a、b、c、sum、version = "old" ):self.a = a self.b = b self.c = c self.sum = 6 self.version = version def __int __(self):return self.sum + 9000 def __what_goes_here __(self):return {"a" :self.a、 "b":self.b、 "c":self.c}  

非常に簡単に整数にキャストできます

 >>> w = Wharrgarbl( "one"、 "two"、 "three"、6)>>> int(w)9006  

これは素晴らしいです!しかし、今度は同様の方法でそれをdictにキャストしたいと思います

 >>> w = Wharrgarbl( "one"、 "two"、 "three"、6)>>> dict(w){"a": "one"、 "c": "three"、 "b": "two"}  

これを機能させるには何を定義する必要がありますか? __ what_goes_here ____dict __dictの両方に置き換えてみましたが、 dict(w)の結果がTypeErrorになりました:どちらの場合も、Wharrgarblオブジェクトは反復可能ではありません。クラスを単純に反復可能にするだけで問題が解決するとは思いません。また、「python cast object to dict」というさまざまな表現を考えられる限り多くのグーグルで試しましたが、関連するものは見つかりませんでした:{

また! w .__ dict __ を呼び出すと、 w.versionw.sumが含まれるため、私が望むことを実行できないことに注意してください。 def int(self)を使用してint にキャストをカスタマイズするのと同じ方法で、 dictにキャストをカスタマイズしたいと思います。

私はこのようなことができることを知っています

 >>> w .__ what_goes_here __(){"a": "one"、 "c": "three"、 "b": "two"}  

しかし、私はpythonicな方法があると仮定しています int(w)またはstr(w)と同じタイプのものであるため、 dict(w)を機能させるため。もっとPythonの方法がない場合は、それでも問題ありません。私が尋ねると思います。ああ、これはPython 2.7の場合ですが、2.4の古くて破壊されたソリューションの場合もスーパーボーナスポイントです。

別の質問がありますPythonクラスでの__dict__()のオーバーロードこれはこれに似ていますが、重複しないことを保証するのに十分異なる可能性があります。OPは、クラスオブジェクト内のすべてのデータを辞書としてキャストする方法を求めていると思います。私は、よりカスタマイズされたアプローチを探しています。 __ dict __ のすべてがdict()によって返される辞書に含まれることを望まない。パブリック変数とプライベート変数のようなもので、私が探しているものを説明するのに十分かもしれません。オブジェクトには、計算で使用されるいくつかの値が格納されるため、結果の辞書に表示する必要はありません。

更新:asdict<を使用することを選択しました。 / code>ルートが提案されましたが、質問に対する答えになりたいものを選択するのは難しい選択でした。 @RickTeacheyと@jpmc26の両方が私が取り組む答えを提供しましたが、前者はより多くの情報とオプションを持っていて、同じ結果に到達し、より多くの賛成を得たので、私はそれに賛成しました。ヘルプ。私はスタックオーバーフローに長く懸命に潜んでいて、つま先をもっと水中に入れようとしています。

この記事が問題の解決に役立つことを願っています。 pythonで、クラスオブジェクトをdictにキャストするにはどうすればよいですか? とは別に、他の __dict__ 関連のトピックを確認してください。

Python で上達したいですか?  最高の Python オンライン コース 2022 のレビューをご覧ください。 データ サイエンスに興味がある場合は、R でプログラミングを学ぶ方法も確認してください。

ちなみに、この資料は他の言語でも利用できます:



Carlo Wu

San Francisco | 2022-11-29

aroundはちょっと混乱する😭 pythonで、クラスオブジェクトをdictにキャストするにはどうすればよいですか?は私が遭遇した唯一の問題ではありません。. もう出てこないことを願うばかりです

Jan Krasiko

Prague | 2022-11-29

説明ありがとうございました 何時間かpythonで、クラスオブジェクトをdictにキャストするにはどうすればよいですか?で詰まってました、やっと出来ました🤗。. それが最良の方法であるかどうかはわかりません

Xu Porretti

Boston | 2022-11-29

説明ありがとうございました 何時間かpythonで、クラスオブジェクトをdictにキャストするにはどうすればよいですか?で詰まってました、やっと出来ました🤗。. 卒論で使わせていただきます

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically