python對象轉(zhuǎn)字典的兩種實現(xiàn)方式示例
本文實例講述了python對象轉(zhuǎn)字典的兩種實現(xiàn)方式。分享給大家供大家參考,具體如下:
一. 方便但不完美的__dict__
對象轉(zhuǎn)字典用到的方法為__dict__. 比如對象對象a的屬性a.name='wk', a.age=18, 那么如果直接將使用a.__dict__獲得對應(yīng)的字典的值為: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之處在于:
比如:
class A(object): name = 'wukt' age = 18 def __init__(self): self.gender = 'male' a = A() print(a.__dict__)
此時的打印結(jié)果是:
{gender: 'male'}
但是類變量name和age無法一同轉(zhuǎn)換.
二. 使用dict
使用dict的方式如下, 如果直接使用會報錯.
a = A() dict(a)
使用dict之時, 將自動調(diào)用類中的keys方法, keys中定義了字典的鍵, 調(diào)用keys方法后, 程序?qū)⒁勒兆值淙≈档姆绞絿L試獲得這些鍵對應(yīng)的值.
當使用如字典的取值方式時: 比如a['name'], 將會調(diào)用類中的__getitem__方法, __getitem__方法決定了這個值是多少.
因此只需要在一例中添加兩個方法就可以使對象可以通過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): '''當對實例化對象使用dict(obj)的時候, 會調(diào)用這個方法,這里定義了字典的鍵, 其對應(yīng)的值將以obj['name']的形式取, 但是對象是不可以以這種方式取值的, 為了支持這種取值, 可以為類增加一個方法''' return ('name', 'age', 'gender') def __getitem__(self, item): '''內(nèi)置方法, 當使用obj['name']的形式的時候, 將調(diào)用這個方法, 這里返回的結(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īng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
- python實現(xiàn)class對象轉(zhuǎn)換成json/字典的方法
- Python3實現(xiàn)的字典、列表和json對象互轉(zhuǎn)功能示例
- Python字典數(shù)據(jù)對象拆分的簡單實現(xiàn)方法
- Python字典對象實現(xiàn)原理詳解
- Python對象轉(zhuǎn)JSON字符串的方法
- Python實現(xiàn)復(fù)雜對象轉(zhuǎn)JSON的方法示例
- Python實現(xiàn)對象轉(zhuǎn)換為xml的方法示例
- Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實例
- Python對象轉(zhuǎn)換為json的方法步驟
相關(guān)文章
pandas數(shù)據(jù)分列實現(xiàn)分割符號&固定寬度
數(shù)據(jù)分列在數(shù)據(jù)處理中很常見,數(shù)據(jù)分列一般指的都是字符串分割,本文主要介紹了pandas數(shù)據(jù)分列實現(xiàn)分割符號&固定寬度,具有一定的參考價值,感興趣的可以了解一下2024-04-04python入門while循環(huán)語句理解學(xué)習(xí)
這篇文章主要介紹了python入門while循環(huán)語句理解學(xué)習(xí),文中附含詳細圖文示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09對python中array.sum(axis=?)的用法介紹
今天小編就為大家分享一篇對python中array.sum(axis=?)的用法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06解決ModuleNotFoundError: No module named ‘
這篇文章主要介紹了解決ModuleNotFoundError: No module named ‘flask._compat的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06python環(huán)境中的概念conda中與環(huán)境相關(guān)指令操作
這篇文章主要介紹了python環(huán)境中的概念conda中與環(huán)境相關(guān)指令操作,虛擬環(huán)境是從電腦獨立開辟出來的環(huán)境,文章介紹了相關(guān)概念,需要的朋友可以參考下2023-03-03