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对象转字典的更多相关文章

  1. python 对象转字典

    从数据库中取出的数数据是 对象类型的,不能直接展示出来,需要转成字典类型,然后转成json 字符串,传给前端: data = {} data.update(obj.__dict__) print(da ...

  2. Python数据类型(字典和集合)

    1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...

  3. python 将一个JSON 字典转换为一个Python 对象

    将一个JSON 字典转换为一个Python 对象例子 >>> s='{"name":"apple","shares":50 ...

  4. [转载]python中将普通对象作为 字典类(dict) 使用

    目前我知道的有两种方法: 1 定义的类继承dict类 例如 class A(dict): pass a = A() a['name'] = 12 2 给自定义的类添加 __setitem__() __ ...

  5. python征程3.0(python对象)

    1.python使用对象模型来存储数据.构造任何类型的值都是一个对象.”尽管python被当成一种面向对象的脚本的编程语言“,但你完全能够写出不使用任何类和实例的脚本. python对象都拥有三个特性 ...

  6. Python 对象的引用计数和拷贝

    Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己 ...

  7. 13.python中的字典

    字典其实和之前的元祖和列表功能相似,都是用来储存一系列对象的.也就是一种可变容器,或者是我所比喻的革新派的菜单. 但也不是完全相同,我在之前曾经将字典称为特殊的'序列',是字典拥有序列的部分特性,但是 ...

  8. Python对象(译)

    这是一篇我翻译的文章,确实觉得原文写的非常好,简洁清晰 原文链接:http://effbot.org/zone/python-objects.htm ------------------------- ...

  9. 《Python核心编程》 第四章 Python对象- 课后习题

    练习 4-1. Python对象.与所有Python对象有关的三个属性是什么?请简单的描述一下. 答:身份.类型和值: 身份:每一个对象都有一个唯一的身份标识自己,可以用id()得到.  类型:对象的 ...

随机推荐

  1. removeLineEndSpace

    /****************************************************************************** * removeLineEndSpace ...

  2. SUST OJ 1675: Fehead的项目(单调栈)

    1675: Fehead的项目 时间限制: 1 Sec  内存限制: 128 MB提交: 41  解决: 27[提交][状态][讨论版] 题目描述 Fehead俱乐部接手了一个项目,为了统计数据,他们 ...

  3. Flask第31课——include标签

    我们在上一节代码基础上增加一些代码,样式: 文件名index.html,代码: {% from 'macros/forms.html' import input %} <!DOCTYPE htm ...

  4. CUDA H624解码性能测试

    测试环境: Cpu:       Inter(R)Core(TM)i7-4790 CPU @3.6GHZ GPU:         NVIDIA GeForce GTX960* 1 操作系统:   W ...

  5. 重磅来袭,开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载(转)

    BrnShop网上商城是以Asp.Net mvc3为基础开发的网上商城,源代码完全开源(企业版的源代码目前还没有完全整理完成,一旦整理完成也全部开源). 啥话也不说了,直接上源码:下载源码(由于公司服 ...

  6. MySQL--修改普通表为自增表

    =========================================================== 修改普通表为自增表 将普通表修改为自增表,可分为两种类型: 1.将现有列修改为自 ...

  7. Oracle 联机重做日志文件(ONLINE LOG FILE)

    --========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...

  8. VS2010编译和运行项目错误

    打开工程提示如下: The 'Microsoft.Data.Entity.Design.BootstrapPackage.BootstrapPackage, Microsoft.Data.Entity ...

  9. 设置zedgraph鼠标拖拽和局部放大属性(转帖)

    说一下几个属性的意义和具体应用: (1)鼠标拖拽显示区域 PanModifierKeys ->> Gets or sets a value that determines which mo ...

  10. 后台调用前台JS(查看客户端IE版本)

    1.前端代码    </form>    //注意放在form下面<script>    function readRegedit() {        var obj = n ...