python -obj转dict

参考链接: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

 

posted @ 2020-10-21 16:48  只会玩辅助  阅读(822)  评论(0编辑  收藏  举报