當前位置:柔美女性網 >

綠色生活 >心理 >

字典對象值列表的返回方法

字典對象值列表的返回方法

字典對象值列表的返回方法

一. 方便但不完美的__dict__

對象轉字典用到的方法為__dict__. 比如對象對象a的屬性='wk', =18, 那麼如果直接將使用a.__dict__獲得對應的字典的值為: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之處在於:

比如:

class A(object):

name = 'wukt'

age = 18

def __init__(self):

er = '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):

er = '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)

標籤: 返回 列表 字典
  • 文章版權屬於文章作者所有,轉載請註明 https://rmnxw.com/zh-hk/lvse/xinli/zkyqpp.html