python對(duì)象轉(zhuǎn)字典的兩種實(shí)現(xiàn)方式示例
本文實(shí)例講述了python對(duì)象轉(zhuǎn)字典的兩種實(shí)現(xiàn)方式。分享給大家供大家參考,具體如下:
一. 方便但不完美的__dict__
對(duì)象轉(zhuǎn)字典用到的方法為__dict__. 比如對(duì)象對(duì)象a的屬性a.name='wk', a.age=18, 那么如果直接將使用a.__dict__獲得對(duì)應(yīng)的字典的值為: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之處在于:
比如:
class A(object):
name = 'wukt'
age = 18
def __init__(self):
self.gender = 'male'
a = A()
print(a.__dict__)
此時(shí)的打印結(jié)果是:
{gender: 'male'}
但是類變量name和age無法一同轉(zhuǎn)換.
二. 使用dict
使用dict的方式如下, 如果直接使用會(huì)報(bào)錯(cuò).
a = A() dict(a)
使用dict之時(shí), 將自動(dòng)調(diào)用類中的keys方法, keys中定義了字典的鍵, 調(diào)用keys方法后, 程序?qū)⒁勒兆值淙≈档姆绞絿L試獲得這些鍵對(duì)應(yīng)的值.
當(dāng)使用如字典的取值方式時(shí): 比如a['name'], 將會(huì)調(diào)用類中的__getitem__方法, __getitem__方法決定了這個(gè)值是多少.
因此只需要在一例中添加兩個(gè)方法就可以使對(duì)象可以通過dict轉(zhuǎn)字典:
def keys(self):
return ('name', 'age' )
def __getitem__(self, item):
return getattr(self, item)
通過這種方式, 既可以支持類變量的轉(zhuǎn)換, 又可以自定義需要轉(zhuǎn)換的字段.
完整代碼:
class A(object):
name = 'wukt'
age = 18
def __init__(self):
self.gender = 'male'
def keys(self):
'''當(dāng)對(duì)實(shí)例化對(duì)象使用dict(obj)的時(shí)候, 會(huì)調(diào)用這個(gè)方法,這里定義了字典的鍵, 其對(duì)應(yīng)的值將以obj['name']的形式取,
但是對(duì)象是不可以以這種方式取值的, 為了支持這種取值, 可以為類增加一個(gè)方法'''
return ('name', 'age', 'gender')
def __getitem__(self, item):
'''內(nèi)置方法, 當(dāng)使用obj['name']的形式的時(shí)候, 將調(diào)用這個(gè)方法, 這里返回的結(jié)果就是值'''
return getattr(self, item)
a = A()
r = dict(a)
print(r)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python字典操作技巧匯總》、《Python列表(list)操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- python實(shí)現(xiàn)class對(duì)象轉(zhuǎn)換成json/字典的方法
- Python3實(shí)現(xiàn)的字典、列表和json對(duì)象互轉(zhuǎn)功能示例
- Python字典數(shù)據(jù)對(duì)象拆分的簡(jiǎn)單實(shí)現(xiàn)方法
- Python字典對(duì)象實(shí)現(xiàn)原理詳解
- Python對(duì)象轉(zhuǎn)JSON字符串的方法
- Python實(shí)現(xiàn)復(fù)雜對(duì)象轉(zhuǎn)JSON的方法示例
- Python實(shí)現(xiàn)對(duì)象轉(zhuǎn)換為xml的方法示例
- Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例
- Python對(duì)象轉(zhuǎn)換為json的方法步驟
相關(guān)文章
termux中matplotlib無法顯示中文問題的解決方法
這篇文章主要介紹了termux中matplotlib無法顯示中文問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python輸入圓半徑,計(jì)算圓周長(zhǎng)和面積的實(shí)現(xiàn)方式
這篇文章主要介紹了Python輸入圓半徑,計(jì)算圓周長(zhǎng)和面積的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
NVIDIA安裝CUDA的實(shí)現(xiàn)(圖文教程)
本文主要介紹了NVIDIA安裝CUDA的實(shí)現(xiàn),包括系統(tǒng)要求、軟件下載、安裝步驟以及常見問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
在PyCharm中高效使用遠(yuǎn)程文件編輯功能的實(shí)現(xiàn)
PyCharm作為業(yè)界領(lǐng)先的集成開發(fā)環(huán)境(IDE),提供了強(qiáng)大的本地和遠(yuǎn)程開發(fā)功能,本文詳細(xì)介紹了如何在PyCharm中使用遠(yuǎn)程文件編輯功能,希望能夠幫助你提高遠(yuǎn)程開發(fā)的效率和體驗(yàn)2024-08-08
Python實(shí)現(xiàn)文件壓縮和解壓的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)文件壓縮和解壓的方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-08-08
python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控,每隔3秒獲取系統(tǒng)內(nèi)存,當(dāng)內(nèi)存超過設(shè)定的警報(bào)值時(shí),獲取所有進(jìn)程占用內(nèi)存并發(fā)出警報(bào)聲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06

