91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

在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

惠东县| 丘北县| 沁水县| 九江县| 夏河县| 鹤山市| 秦皇岛市| 彭山县| 福清市| 台北县| 金堂县| 清河县| 冷水江市| 临潭县| 浑源县| 东台市| 梁河县| 桑日县| 息烽县| 洛川县| 亚东县| 阿拉尔市| 商都县| 外汇| 夏河县| 天柱县| 宜宾市| 浦城县| 鄂尔多斯市| 贺州市| 武汉市| 五原县| 张掖市| 武义县| 敦煌市| 肇庆市| 阳城县| 安宁市| 余姚市| 永福县| 吴桥县|