定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下:

class A:def __init__(self):self.a = 1self.b = 2a = A()
print(a.__dict__)
# {'a': 1, 'b': 2}
#获取变量a:
print(a.__dict__['a'])
# 1

如果我们想直接通过字典的方式访问类,obj=A(),dict(obj)直接拿到类的所有实例变量,可以通过如下方式:

class A:def __init__(self):self.a = 1self.b = 2def keys(self):return ('a','b',)def __getitem__(self, item):return getattr(self, item)a = A()
print(dict(a))
#输出:{'a': 1, 'b': 2}

可以看到,通过定义keys方法能够限制类的实例变量的输出,用内置的dict方法就能把类转换成一个普通的字典了

转载于:https://www.cnblogs.com/PyKK2019/p/10888934.html

Python把类当做字典来访问相关推荐

  1. Python 代理类实现和控制访问与修改属性的权限

    本篇文章主要内容 代理类主要功能是将一个类实例的属性访问和控制代理到代码内部另外一个实例类,将想对外公布的属性的访问和控制权交给代理类来操作,保留不想对外公布的属性的访问或控制权,比如只读访问,日志功 ...

  2. Python 创建类的成员并访问

    类的成员: python 中类的成员是有实例方法和数据成员组成 1 创建实例方法并访问 创建实例方法,就是创类类的时候实例化方法,具体的如下 class People:def __init__(sel ...

  3. python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...

  4. 怎么用python画心_python怎么画心Python的类实例属性访问规则

    一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里,我们需要明白以下几个地方: 1.Pytho ...

  5. python完全支持面向对象编程思想_面向对象的编程思想和Python的类,访问和属性,继承...

    本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和Python类的继承. 复制代码 一.访问权限: Python中在类的内部定义属性和方法,在类的外部是可以直接调用或进行访问 ...

  6. Python的类实例属性访问规则

    一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里,我们需要明白以下几个地方: 1.Pytho ...

  7. python 类和对象_面向对象的编程思想和Python的类,访问和属性,继承

    面向对象的编程思想和Python的类,类的方法和属性,实例方法这一文从面向对象的角度,介绍类的定义,类的属性和自定义方法. 本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和 ...

  8. [转载] python类内部成员的访问及外部访问(入门)

    参考链接: 在Python中更改类成员 class Student(): school = "xcxy"                    # 类属性 __major = &q ...

  9. python内容限制_Python --类,实例和访问限制

    与其他编程语言相比,Python的类机制添加了至少具有新语法和语义的类.它是C ++和Modula-3中发现的类机制的混合体. Python类提供面向对象编程的所有标准功能:类继承机制允许多个基类,派 ...

最新文章

  1. css圆角矩形及去掉空格属性
  2. 6行代码解决golang TCP粘包
  3. 科大讯飞同时公布年报和一季度报,冰火两重天
  4. hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写
  5. COM编程入门 第三部分(网文补充)
  6. 【优化求解】基于NSGA2算法求解多目标优化问题matlab代码
  7. 账户验证业务规则及改造要点介绍
  8. adb shell使用教程+sqlite3使用示例
  9. 圣多米尼克高中有计算机课吗,院校库_VPEA北美留学院校数据查询中心
  10. 访问服务器显示我被拒绝,连接到服务器localhost:8080被拒绝(The connection to the server localhost:8080 was refused)...
  11. 02_泰坦尼克号幸存者分析(上)
  12. java——集合详解
  13. ADF 入门教程(1)
  14. c#模拟微信运动排行榜
  15. win7系统打印机开启服务器,开启打印机服务【设置模式】
  16. Unity协程的返回值
  17. java重复录入怎么删除,删除重复记录的方法
  18. deo.php viewkey,新编粤语读音字典 - 粤语 | Cantonese | 白话 - 声同小语种论坛 - Powered by phpwind...
  19. 如何做微信分享抽佣以及分佣金
  20. Console线连接交换机路由器等设备

热门文章

  1. github 仓库管理及代码上传
  2. linux ipv4参数查看,Linux内核参数之IPV4变量引用
  3. java内存溢出模拟_模拟实战排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)问题...
  4. mongodb更新语句_MongoDB更新
  5. android 崩溃捕获_Android从相机和图库捕获图像
  6. arcore 示例_Android增强现实– Android ARCore示例
  7. guice依赖注入原理_Google Guice依赖注入示例教程
  8. 02C++namespace命名空间
  9. 中国硬科技城市发展指数正式发布,西安跻身前十
  10. TypeScript + ES6