中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在python中實現對象轉字典的方法有哪些

發布時間:2021-03-01 15:54:25 來源:億速云 閱讀:343 作者:戴恩恩 欄目:開發技術

這篇文章主要為大家詳細介紹了在python中實現對象轉字典的方法有哪些,文中示例代碼介紹的非常詳細,具有一定的參考價值,發現的小伙伴們可以參考一下:

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中實現對象轉字典的方法有哪些,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰顺县| 娱乐| 卫辉市| 砀山县| 石台县| 彝良县| 仁寿县| 贵港市| 呈贡县| 集贤县| 和顺县| 舟曲县| 东方市| 始兴县| 鸡东县| 上林县| 武乡县| 澄江县| 托克逊县| 新余市| 色达县| 崇文区| 襄樊市| 霍城县| 迁安市| 枣庄市| 攀枝花市| 宽甸| 南开区| 运城市| 柞水县| 洛川县| 聂拉木县| 澄城县| 潮州市| 上林县| 湖州市| 定兴县| 彩票| 洪雅县| 浑源县|