Python’da, bir sınıf nesnesini bir dikteye nasıl atarım?

| | | | | | |

Diyelim ki python'da basit bir sınıfım var

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 = sürüm def __int__(self): dönüş self.sum + 9000 def __what_goes_here__(self): dönüş {"a" : self.a, "b": self.b, "c": self.c} 

Bunu bir tamsayıya çok kolay çevirebilirim

>>> w = Wharrgarbl("bir", "iki", "üç", 6) >>> int(w) 9006 

Bu harika! Ama şimdi onu benzer bir şekilde bir dikteye dönüştürmek istiyorum

>>> w = Wharrgarbl("bir", "iki", "üç", 6) >>> dict(w) {"a": "bir", "c": "üç", "b": "iki"} 

Bunun çalışması için neyi tanımlamam gerekiyor ? __what_goes_here__ yerine hem __dict__ hem de dict kullanmayı denedim, ancak dict(w) bir TypeError ile sonuçlandı : Her iki durumda da Wharrgarbl nesnesi yinelenemez. Sınıfı tekrarlanabilir hale getirmenin sorunu çözeceğini düşünmüyorum. Ayrıca "python cast object to dict" ifadesinin düşünebildiğim kadar çok farklı ifadesiyle birçok google'ı denedim ama alakalı bir şey bulamadım:{

Ayrıca! w.__dict__ çağrısının, w.version ve w.sum içereceği için istediğimi yapmayacağına dikkat edin. Alımı, def int(self) kullanarak int olarak özelleştirebildiğim şekilde dict olarak özelleştirmek istiyorum.

Böyle bir şey yapabileceğimi biliyorum

>>> w.__what_goes_here__() {"a": "bir", "c": "üç", "b": "iki"} 

Ancak Pythonic bir yol olduğunu varsayıyorum int(w) veya str(w) ile aynı türde olduğundan, dict(w) işlevini yapmak için. Daha Pythonic bir yol varsa, bu da sorun değil, sadece sorayım dedim. Ah! Sanırım önemli olduğu için, bu python 2.7 için, ancak 2.4 eski ve bozuk bir çözüm için de süper bonus puanlar.

Başka bir soru var python sınıfında __dict__() aşırı yükleme buna benzer, ancak bunun bir kopya olmadığını garanti edecek kadar farklı olabilir. OP'nin sınıf nesnelerindeki tüm verilerin sözlük olarak nasıl yayınlanacağını sorduğuna inanıyorum. dict() tarafından döndürülen sözlükte bulunan __dict__ içindeki her şeyin olmasını istemiyorum. Genel ve özel değişkenler gibi bir şey aradığımı açıklamak için yeterli olabilir. Nesneler, hesaplamalarda kullanılan bazı değerleri depolayacak ve sonuçta ortaya çıkan sözlüklerde görünmeye ihtiyacım yok/istemiyorum.

GÜNCELLEME: asdict rota önerildi ancak sorunun cevabı olmak istediğim şeyi seçmek zor bir seçimdi. Hem @RickTeachy hem de @jpmc26, birlikte kullanacağım cevabı verdi, ancak birincisi daha fazla bilgi ve seçeneğe sahipti ve aynı sonuca vardı ve daha fazla oy aldı, ben de onunla gittim. yardım edin. Stackoverflow'ta uzun süre pusuya yattım ve ayak parmaklarımı suya daha fazla sokmaya çalışıyorum.

Bu makalenin sorunu çözmenize yardımcı olduğunu umuyoruz. Python’da, bir sınıf nesnesini bir dikteye nasıl atarım? dışında, __dict__ ile ilgili diğer konulara bakın.

Python'da başarılı olmak ister misiniz? en iyi Python çevrimiçi kursları 2022 hakkındaki incelememize bakın. Veri Bilimi ile ilgileniyorsanız, R'de programlamayı nasıl öğreneceğinizi de kontrol edin.

Bu arada, bu materyal diğer dillerde de mevcuttur:



Boris Robinson

Texas | 2022-11-29

private variables her şey biraz kafa karıştırıcı 😭 Python’da, bir sınıf nesnesini bir dikteye nasıl atarım? karşılaştığım tek sorun değil. Geri bildirim ile yarın geri dönecek

Schneider Wu

Massachussetts | 2022-11-29

Kodlama mülakatıma hazırlanıyordum, bunu açıkladığınız için teşekkürler - Python'da Python’da, bir sınıf nesnesini bir dikteye nasıl atarım? en basit olanı değil. Geri bildirim ile yarın geri dönecek

Javier Ungerschaft

London | 2022-11-29

Açıkladığın için teşekkürler! Ben Python’da, bir sınıf nesnesini bir dikteye nasıl atarım?'a takılıp kalmıştım. birkaç saattir uğraşıyorum, sonunda hallettim 🤗. Geri bildirim ile yarın geri dönecek

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