python -obj轉dict
阿新 • • 發佈:2020-10-21
參考連結:https://blog.csdn.net/u011622109/article/details/106978372
物件轉obj的三種方式 (常用的是前兩種)
1.__dict__ 使用方法:obj.__dict__
在__init__方法和物件顯示賦值的屬性才會轉化
2.dict函式 使用方法:dict(obj)
需要定義keys和__getitem__方法,所有屬性都會轉化dict
3.取出物件裡的屬性名和值,塞到dict中
需要遍歷物件的屬性
示例
第一種方式:
# 物件類 class User: is_admin = False desc = '' def __init__(self, name)-> None: self.name = name self.age = 1 # 測試方法 class MyTestCase(unittest.TestCase): def test_user(self): user = User('iworkh') user.is_admin = True # 只有塞值的時候,才會轉化為dic # desc沒有塞值,dic中沒有 print(user.__dict__) pass
第二種:
class Product: price= 10 desc = '' def __init__(self, name) -> None: self.name = name def keys(self): '''當對例項化物件使用dict(obj)的時候, 會呼叫這個方法,這裡定義了字典的鍵, 其對應的值將以obj['name']的形式取, 但是物件是不可以以這種方式取值的, 為了支援這種取值, 可以為類增加一個方法''' return ('name', 'price', 'desc') def __getitem__(self, item):'''內建方法, 當使用obj['name']的形式的時候, 將呼叫這個方法, 這裡返回的結果就是值''' return getattr(self, item) # 測試方法 class MyTestCase(unittest.TestCase): def test_product(self): product = Product('book') print(dict(product)) pass