python对象转字典
1.基础实现
class TestDict:
name = "wyb"
age = "" def __init__(self):
self.gender = 'male' def keys(self): # 获取字典的键
s = ('name', 'age', 'gender')
return s def __getitem__(self, item): # 获取键对应的值
return getattr(self, item) # getattr获取对象下某个属性的值 o = TestDict()
print(dict(o)) # 创建字典 -> 先调用对象下的keys方法再用o["xxx"]获取值([]本质上是调用对象下的__getitem__方法)
2.进阶实现
class Base(object):
def __init__(self):
self.fields = [] def __getitem__(self, item):
return getattr(self, item) def keys(self):
return self.fields def hide(self, *keys): # 隐藏域
for key in keys:
self.fields.remove(key)
return self def append(self, *keys): # 添加域
for key in keys:
self.fields.append(key)
return self class Sx(Base):
name = "wyb"
age = 21 def __init__(self):
super(Base, self).__init__()
self.gender = 'male'
# self.fields定义默认输出字段
self.fields = ["name", "age"] o1 = Sx()
print(dict(o1))
o2 = Sx()
print(dict(o2.hide("age")))
o3 = Sx()
print(dict(o3.append("gender"))) # 输出结果:
# {'name': 'wyb', 'age': 21}
# {'name': 'wyb'}
# {'name': 'wyb', 'age': 21, 'gender': 'male'}
python对象转字典的更多相关文章
- python 对象转字典
从数据库中取出的数数据是 对象类型的,不能直接展示出来,需要转成字典类型,然后转成json 字符串,传给前端: data = {} data.update(obj.__dict__) print(da ...
- Python数据类型(字典和集合)
1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...
- python 将一个JSON 字典转换为一个Python 对象
将一个JSON 字典转换为一个Python 对象例子 >>> s='{"name":"apple","shares":50 ...
- [转载]python中将普通对象作为 字典类(dict) 使用
目前我知道的有两种方法: 1 定义的类继承dict类 例如 class A(dict): pass a = A() a['name'] = 12 2 给自定义的类添加 __setitem__() __ ...
- python征程3.0(python对象)
1.python使用对象模型来存储数据.构造任何类型的值都是一个对象.”尽管python被当成一种面向对象的脚本的编程语言“,但你完全能够写出不使用任何类和实例的脚本. python对象都拥有三个特性 ...
- Python 对象的引用计数和拷贝
Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己 ...
- 13.python中的字典
字典其实和之前的元祖和列表功能相似,都是用来储存一系列对象的.也就是一种可变容器,或者是我所比喻的革新派的菜单. 但也不是完全相同,我在之前曾经将字典称为特殊的'序列',是字典拥有序列的部分特性,但是 ...
- Python对象(译)
这是一篇我翻译的文章,确实觉得原文写的非常好,简洁清晰 原文链接:http://effbot.org/zone/python-objects.htm ------------------------- ...
- 《Python核心编程》 第四章 Python对象- 课后习题
练习 4-1. Python对象.与所有Python对象有关的三个属性是什么?请简单的描述一下. 答:身份.类型和值: 身份:每一个对象都有一个唯一的身份标识自己,可以用id()得到. 类型:对象的 ...
随机推荐
- IoT 通信协议
/********************************************************************************* * IoT 通信协议 * 说明: ...
- STM32 RTC时钟的配置
1) 使能电源时钟和备份区域时钟. RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能电源时钟和 ...
- 配置搭建与使用redis
redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 redis是如今被互联网公司使用最广泛的一个中间件,我们打开GitHub搜索redis,边 ...
- java8 array、list操作 汇【2】)- (Function,Consumer,Predicate,Supplier)应用
static class UserT { String name; public UserT(String zm) { this.name=zm; } public String getName() ...
- $.inArray方法
- Jmeter 在linux下的分布式压测
Jmeter 在linux下的分布式压测 0.将 windows机器作为master 控制机(同时也兼做负载机slave), linux机器作为 负载机 slave. 1.linux环境安装 : (1 ...
- 【转】每天一个linux命令(15):tail 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/11/07/2758084.html tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f ...
- TopCoder客户端安装
参考:https://blog.csdn.net/github_39353095/article/details/76165940 首先,下载 Java 环境. https://www.java.co ...
- RK3288 wifi模块打开或关闭5G信号
CPU:RK3288 系统:Android 5.1 如果硬件使用的wifi模块支持5G,则系统设置中打开wifi,除了会搜索到普通的2.4G信号,还会搜索到xxx_5G信号. 如果路由器开了5G信号, ...
- R(8): tidyr
tidy(整洁),Tidyr包是由Hadely Wickham创建,这个包提高了整理原始数据的效率,tidyr包的4个常用的函数及其用途如下: gather()——它把多列放在一起,然后转化为key: ...