上节介绍了使用实例的__dict__查看实例的自定义属性,其实还可以直接使用__dict__定义实例变量和实例方法。
一、 使用__dict__定义实例变量

  1. 语法:
    对象名. dict[属性名] = 值
  2. 语法释义:
    “对象名”为要增加实例变量的对象,如果是在实例方法中,应该为”self”。
    属性名为要定义实例变量的名字,必须是字符串类型,即变量名必须用引号。
    上述语法相当于:
    对象.属性 = 值。
    这是由于Python中所有变量都存在对应名字空间的字典中,定义变量就是增加一个字典的元素。

二、 使用__dict__定义实例方法

  1. 语法:
    对象名. dict[属性名] = 函数名
  2. 语法释义:
    “对象名”为要增加实例变量的对象,如果是在实例方法中,应该为”self”,关于self,请参考《第7.5节 揭开Python类中self的面纱》。
    属性名为要定义实例方法的名字,必须是字符串类型,即变量名必须用引号。
    三、 案例
  3. 案例说明
    例子中定义了一个类Car,在该类的构造方法中使用__dict__增加了一个实例变量和一个drive方法,其中drive方法与self的绑定使用了《第7.14节Python类中的实例方法解析》中介绍的MethodType。定义类后我定义一个实例,来访问通过__dict__增加的实例变量和实例方法。
  4. 源代码(交互模式)
>>> from types import MethodType #导入MethodType方法
>>> def fdrive(self,distance):self.totaldistance += distance  #定义一个函数,准备用于赋值给类的实例方法属性>>> class Car():def __init__(self, power):self.power = powerself.__dict__['totaldistance'] = 10  #使用__dict__定义实例变量self.__dict__['drive'] = MethodType(fdrive,self)  #将函数赋值给drive方法,并与self绑定>>> car = Car('汽油发动机')
>>> car.drive(103)
>>> car.totaldistance
113
  1. 执行截屏

    为了简单说明,我们只介绍在实例方法中使用__dict__定义实例变量和实例方法,实际上与动态定义实例变量和方法一样,使用__dict__一样可以在类体外定义实例变量和方法。只是把实例方法中定义的方法的调用者由”self”改成”实例对象”即可。在此就不展开说了。
    本节结合案例介绍了直接使用类中的__dict__定义实例变量和实例方法,本身这种实现方式没有多大价值,只是为了说明类中属性的定义本质上就是操作__dict__的元素。
    老猿Python系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
    欢迎大家批评指正,谢谢大家关注!

第8.12节 Python类中使用__dict__定义实例变量和方法相关推荐

  1. 第7.14节 Python类中的实例方法详析

    第7.14节 Python类中的实例方法详析 一.    实例方法的定义 在本章前面章节已经介绍了类的实例方法,实例方法的定义有三种方式: 1.    类体中定义实例方法 第一种方式很简单,就是在类体 ...

  2. python类中包含一个特殊的变量、它表示当前对象自身_知到APP教师职场礼仪第七单元章节测试网课答案大学课后答案...

    [判断题]水参与了植物体内众多的生物化学反应. [单选题]所有参加保险的人为自己办理保险而合作成立法人组织的相互保险组织是( ). A. 相互保险公司 B. 相互保险社 C. 保险合作社 D. 保险合 ...

  3. python类中包含一个特殊的变量、它可以访问类的成员_区域联防的运用中遵循并贯彻以球为主的防守原则,做到球人区三者兼顾。( )...

    刘墉书法的特点是用墨厚重,体丰骨劲,浑厚敦实,别具面目.A:对B:错 Python类中包含一个特殊的变量(),它表示当前对象自身,可以访问类的成员.A:meB:selfC:thisD:与类同名 在过火 ...

  4. python类中包含一个特殊的变量、它可以访问类的成员_Python类中包含一个特殊的变量( ),它表示当前对象自身,可以访问类的成员....

    包含票务系统的业务管理主要内容包括()A:运营监督B:规则管理C:信息管理D:财务管理E:模式管理 特殊表嘌呤核苷酸补救合成途径的主要器官是().A:脑组织B:小肠C:胸腺D:肝脏E:肾脏 示当身嘌呤 ...

  5. python类中包含一个特殊的变量、它可以访问类的成员_Python 类的特殊成员介绍...

    类的成员有两种形式 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法,私有成员命名时,前两个字符是下划线. class Foo: def __init__(self, name, age ...

  6. 第8.18节 Python类中内置析构方法__del__

    一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...

  7. python类中的__dict__

    直接上代码: class Person(object): name = 'python' age = 18 def __init__(self): self.sex = 'boy' self.like ...

  8. python3 类中字典类型的实例变量被“篡改”

    先看下面的例子 class A(object):va = ""def foo(self,str):self.va = strdef defPrint(self):print(sel ...

  9. python __repr__方法_第8.13节 Python类中内置方法__repr__详解

    当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入print(对象)或代码中print(对象)也会输出对象的信息,这些输出信息与两个内置方法:__str__方法和__repr__方法有关 ...

最新文章

  1. A - 棋盘问题 POJ - 1321(dfs)
  2. 有多少用户痛点,你是听回来的,而不是经过深思过后找出来的
  3. 3.2.3 OS之页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法)
  4. 排序及其分类(一级)
  5. 电脑常用操作 (1)
  6. java 3_Java 3 (Java的数据类型)
  7. JS判断图片是否加载完毕
  8. Markdown中的特殊符号
  9. html在文本框选中后在表格中选中,excel表格出现文本框的解决方法步骤
  10. c语言错误spawning,C语言一直出现Error spawning cl.exe的解决办法
  11. property attribute: assign, strong, weak, unsafe_unretain and copy
  12. vb计算机器,科学计算器vb代码
  13. 【高电复习3】频谱的线性搬移、振幅调制、解调、混频
  14. Python爬虫教程:包图网免费付费素材爬取【附源码】
  15. 深度学习deep learning
  16. mac系统修改idea运行内存
  17. 水逆期自我救赎:MacBook pro进水
  18. Ubuntu安装搜 狗输入法,最完整的步骤
  19. 【LeetCode】第289场单周赛 --- 用中等题来骗来偷袭我这个老同志?
  20. 解决swap file .swp already exists 问题

热门文章

  1. 视频聊天软件开发技术
  2. 爬取前程无忧网站数据
  3. Ceph学习——Librbd块存储库与RBD读写流程源码分析
  4. 汕头c语言培训班,汕头c语言编程学习,汕头学c语言编程哪个好,汕头学c语言编程需要报培训班吗...
  5. GO语言基础进阶教程:sync包——读写锁
  6. Wireshark抓包的妙用
  7. 济南药品保健品交易会,2022全国中医药产业展会,山东药品展
  8. 中国高校鄙视链指南!
  9. Towards High Performance Video Object Detection论文笔记
  10. 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]