没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本文实例讲述了python对象转字典的两种实现方式。分享给大家供大家参考,具体如下: 一. 方便但不完美的__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()
资源推荐
资源详情
资源评论
python对象转字典的两种实现方式示例对象转字典的两种实现方式示例
本文实例讲述了python对象转字典的两种实现方式。分享给大家供大家参考,具体如下:
一一. 方便但不完美的方便但不完美的__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相关内容感兴趣的读者可查看本站专题:《Python字典操作技巧汇总》、《Python列表(list)操作技巧总
结》、《Python函数使用技巧总结》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》及《Python入门与
进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章您可能感兴趣的文章:python实现class对象转换成json/字典的方法Python3实现的字典、列表和json对象互转功能示例Python
字典数据对象拆分的简单实现方法Python字典对象实现原理详解Python对象转JSON字符串的方法Python实现复杂对象转
资源评论
weixin_38744153
- 粉丝: 346
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功