python对象转字典的两种实现方式示例

 更新时间:2019年11月07日 09:03:05   作者:weixin_42359464  
这篇文章主要介绍了python对象转字典的两种实现方式,结合实例形式分析了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中对变量赋值过程的理解

    关于Python中对变量赋值过程的理解

    在Python中对变量赋值过程的理解,有助于学习者对Python的变量和所指向的对象之间的指向关系深刻理解,避免编程中多个变量赋值后,对变量结果的不确定,,需要的朋友可以参考下
    2023-05-05
  • 如何用Python进行时间序列分解和预测

    如何用Python进行时间序列分解和预测

    这篇文章主要介绍了如何用Python进行时间序列分解和预测,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • 深入浅析python 中的匿名函数

    深入浅析python 中的匿名函数

    匿名函数指一类无须定义标识符的函数或子程序。接下来通过本文给大家介绍python 中的匿名函数,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • Python实现的文轩网爬虫完整示例

    Python实现的文轩网爬虫完整示例

    这篇文章主要介绍了Python实现的文轩网爬虫,结合完整实例形式分析了Python爬虫爬取文轩网图书信息的相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • Python利器openpyxl之操作excel表格

    Python利器openpyxl之操作excel表格

    这篇文章主要给大家介绍了关于Python利器openpyxl之操作excel表格的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python -m参数原理及使用方法解析

    Python -m参数原理及使用方法解析

    这篇文章主要介绍了Python -m参数原理及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 改变 Python 中线程执行顺序的方法

    改变 Python 中线程执行顺序的方法

    这篇文章主要介绍了改变 Python 中线程的执行顺序的方法,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • python 实现将多条曲线画在一幅图上的方法

    python 实现将多条曲线画在一幅图上的方法

    今天小编就为大家分享一篇python 实现将多条曲线画在一幅图上的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 人脸识别经典算法一 特征脸方法(Eigenface)

    人脸识别经典算法一 特征脸方法(Eigenface)

    这篇文章主要为大家详细介绍了人脸识别经典算法一,特征脸方法Eigenface,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python转换字符串为摩尔斯电码的方法

    python转换字符串为摩尔斯电码的方法

    这篇文章主要介绍了python转换字符串为摩尔斯电码的方法,涉及Python字符串及编码操作的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07

最新评论