您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細介紹了在python中實現對象轉字典的方法有哪些,文中示例代碼介紹的非常詳細,具有一定的參考價值,發現的小伙伴們可以參考一下:
Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。
具體如下:
一. __dict__
對象轉字典用到的方法為__dict__. 比如對象對象a的屬性a.name='wk', a.age=18, 那么如果直接將使用a.__dict__獲得對應的字典的值為: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之處在于:
比如:
class A(object): name = 'wukt' age = 18 def __init__(self): self.gender = 'male' a = A() print(a.__dict__)
此時的打印結果是:
{gender: 'male'}
但是類變量name和age無法一同轉換.
二. 使用dict
使用dict的方式如下, 如果直接使用會報錯.
a = A() dict(a)
使用dict之時, 將自動調用類中的keys方法, keys中定義了字典的鍵, 調用keys方法后, 程序將依照字典取值的方式嘗試獲得這些鍵對應的值.
當使用如字典的取值方式時: 比如a['name'], 將會調用類中的__getitem__方法, __getitem__方法決定了這個值是多少.
因此只需要在一例中添加兩個方法就可以使對象可以通過dict轉字典:
def keys(self): return ('name', 'age' ) def __getitem__(self, item): return getattr(self, item)
通過這種方式, 既可以支持類變量的轉換, 又可以自定義需要轉換的字段.
完整代碼:
class A(object): name = 'wukt' age = 18 def __init__(self): self.gender = 'male' def keys(self): '''當對實例化對象使用dict(obj)的時候, 會調用這個方法,這里定義了字典的鍵, 其對應的值將以obj['name']的形式取, 但是對象是不可以以這種方式取值的, 為了支持這種取值, 可以為類增加一個方法''' return ('name', 'age', 'gender') def __getitem__(self, item): '''內置方法, 當使用obj['name']的形式的時候, 將調用這個方法, 這里返回的結果就是值''' return getattr(self, item) a = A() r = dict(a) print(r)
以上就是億速云小編為大家收集整理的在python中實現對象轉字典的方法有哪些,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。