zoukankan      html  css  js  c++  java
  • 第8.12节 Python类中使用__dict__定义实例变量和方法

    上节介绍了使用实例的__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 = power
            self.__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的世界。
      欢迎大家批评指正,谢谢大家关注!
  • 相关阅读:
    Idea主题下载
    使用plsql创建用户并授权(图形化界面)
    PLSQL Developer 没有64位版本 + 找不到 msvcr71.dll
    NOIp2017TG解题报告
    Restart
    NOIp2018RP++
    其他题
    Errors
    NOIpDairy
    Code Style for OI
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11104843.html
Copyright © 2011-2022 走看看