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对象转换为json的方法步骤
Python中内置了json库,用起来超级方便,json现在以成为开发的必备. python对象到json字符串的转换规则: Python JSON dict object list, tuple array str, unicode string int, long, float number True true False false None null json字符串到python对象的转换规则: JSON Python object dict array list string unic
-
Python对象转JSON字符串的方法
本文实例讲述了Python对象转JSON字符串的方法.分享给大家供大家参考,具体如下: import json class JSONObject(object): def __init__(self): self.name = 'Ahan' self.email = 'www@qq.com' self.age = 26 if __name__ == '__main__': o = JSONObject() print json.dumps(o, default=lambda o: o.__dic
-
Python实现对象转换为xml的方法示例
本文实例讲述了Python实现对象转换为xml的方法.分享给大家供大家参考,具体如下: # -*- coding:UTF-8 -*- ''''' Created on 2010-4-20 @author: 忧里修斯 ''' import xml.etree.ElementTree as ET import xml.dom.minidom as minidom from addrbook.domain import Person class Converter(object): ''''' 实现P
-
Python之dict(或对象)与json之间的互相转化实例
在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作. 在Python中自带json库.通过import json导入. 在json模块有2个方法, loads():将json数据转化成dict数据 dumps():将dict数据转化成json数据 load():读取json文件数据,转成dict数据 dump():将dict数据转化成json数据后写入json文件 下面是具体的示例: dict字典转json数据 import json def dict_to_j
-
Python字典对象实现原理详解
字典类型是Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) : >>> d = {'a': 1, 'b': 2} >>> d['c'] = 3 >>> d {'a': 1, 'b': 2, 'c': 3} 在字符串的实现原理文章中,曾经出现过字典对象用于intern操作,那么字典的内部结构是怎样的呢?PyDictObject对象就是dict的内部实现. 哈希表 (HASH TA
-
Python字典数据对象拆分的简单实现方法
本文实例讲述了Python字典数据对象拆分的简单实现方法.分享给大家供大家参考,具体如下: 有朋友问了下问题: {'A1;A2': 'B','A3': 'C'}这种数据结构要拆解成{'A1':'B', 'A2': 'B', 'A3': 'C'},要如何实现? 这种问题,如果用普通的for循环来实现的话,还是有点麻烦: >>> dct = {'A1;A2': 'B','A3': 'C'} >>> tmp = {} >>> for k,v in dct.i
-
Python实现复杂对象转JSON的方法示例
本文实例讲述了Python实现复杂对象转JSON的方法.分享给大家供大家参考,具体如下: 在Python对于简单的对象转json还是比较简单的,如下: import json d = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], 'c': 100} json_str = json.dumps(d) print json_str 对于复杂对象,可以使用下面的方法来实现,比如: import json class Customer: def __init__(self,
-
Python3实现的字典、列表和json对象互转功能示例
本文实例讲述了Python3实现的字典.列表和json对象互转功能.分享给大家供大家参考,具体如下: python3可以使用json模块操作json json.dumps(): 对json进行编码,对应php的json_encode() json.loads(): 对json进行解码,对应php的json_decode() test.py #!/usr/bin/python3 import json #python字典类型转换为json对象 data = { 'id' : 1, 'name' :
-
python实现class对象转换成json/字典的方法
本文实例讲述了python实现class对象转换成json字典的方法.分享给大家供大家参考,具体如下: # -*- encoding: UTF-8 -*- class Student: name = '' age = 0 def __init__(self, name, age): self.name = name self.age = age def convert_to_dict(obj): '''把Object对象转换成Dict对象''' dict = {} dict.update(obj
-
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
-
python打印异常信息的两种实现方式
1. 直接打印错误 try: # your code except KeyboardInterrupt: print("quit") except Exception as ex: print("出现如下异常%s"%ex) 如下例子 try: 2/0 except Exception as e: print(e) 结果为:division by zero 2. 用traceback模块打印 上述结果看不到具体错误的信息,如行数啥的,不方便调试的时候定位,因此也可以用
-
PHP容器类的两种实现方式示例
本文实例讲述了PHP容器类的两种实现方式.分享给大家供大家参考,具体如下: 通过魔术方法实现 class class MagicContainer{ private $ele; function __construct() { $this->ele = []; } function __set($name, $value) { $this->ele[$name] = $value; } function __get($name) { return $this->ele[$name]; }
-
pytest用例间参数传递的两种实现方式示例
目录 前言 一.通过conftest创建全局变量 二.使用tmpdir_factory方法 总结 前言 我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B的某个字段的入参.如果是使用postman,那我们可以通过设置后置变量,然后在需要使用的地方通过{{}}的方式来进行调用.但是如果是使用自己写的测试框架中要如何实现呢?我想到的是如下三种方法. 首先说明一下,以下三种方式均是通过python + pytest来实现的 一.通过conftest创建全局变量 c
-
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
本文实例讲述了Python操作MySQL数据库的两种方式.分享给大家供大家参考,具体如下: 第一种 使用pymysql 代码如下: import pymysql #打开数据库连接 db=pymysql.connect(host='1.1.1.1',port=3306,user='root',passwd='123123',db='test',charset='utf8') cursor=db.cursor()#使用cursor()方法获取操作游标 sql = "select * from tes
-
python使用mysql的两种使用方式
Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymql pymsql是Python中操作MySQL的模块,在windows中的安装: pip install pymysql 入门:我们连接虚拟机中的centos中的mysql,然后查询test数据库中student表的数据 import pymysql #创建连接 conn = pymysql.connect(host='192.168.123.207',port=3306,user='r
-
对Python中创建进程的两种方式以及进程池详解
在Python中创建进程有两种方式,第一种是: from multiprocessing import Process import time def test(): while True: print('---test---') time.sleep(1) if __name__ == '__main__': p=Process(target=test) p.start() while True: print('---main---') time.sleep(1) 上面这段代码是在window
-
python爬虫模拟浏览器的两种方法实例分析
本文实例讲述了python爬虫模拟浏览器的两种方法.分享给大家供大家参考,具体如下: 爬虫爬取网站出现403,因为站点做了防爬虫的设置 一.Herders 属性 爬取CSDN博客 import urllib.request url = "http://blog.csdn.net/hurmishine/article/details/71708030"file = urllib.request.urlopen(url) 爬取结果 urllib.error.HTTPError: HTTP
-
Python之关于类变量的两种赋值区别详解
我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = "hello" p1 = Person() p2 = Person() print p1.TAG #第一种赋值方式 print p2.TAG print Person.TAG #第二种赋值方式 p1.TAG = "damn it" print p1.TAG print
-
python 自动刷新网页的两种方法
1.简介 打开网页 实现定时刷新 可以看到 多次自动打开关闭网页之后,浏览的数量 从 118 自动变成了 119 2.功能实现 1) 一种方法 from time import sleep from selenium import webdriver driver= webdriver.Chrome() # 需要 下载 对应浏览器 驱动到 python 安装目录 driver.get("https://blog.csdn.net/qq_27061049/article/details/90577
随机推荐
- 不用MOUSEMOVE也能滑动啊
- 基于Spring MVC 简介及入门小例子(推荐)
- 如何应用C#实现UDP的分包组包
- 使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
- js中的window.open返回object的错误的解决方法
- JS功能代码集锦
- 通过Ajax两种方式讲解Struts2接收数组表单的方法
- shell 字符串操作(长度,查找,替换)详解
- mysql innodb的监控(系统层,数据库层)
- jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
- JavaScript动态添加css样式和script标签
- 兼容firefox的文本框只能输入两位小数的数字的代码
- 注册表收藏夹,你用好了吗
- java日期操作工具类(获取指定日期、日期转换、相隔天数)
- http basic authentication通过post方式访问api示例分享 basic认证示例
- java 二维码的生成与解析示例代码
- 聊天室php&mysql(四)
- 浅析android中的线程封装
- CentOS6.5与CentOS7 ssh修改默认端口号的方法
- Spring学习笔记之RestTemplate使用小结