先看看下面代码:

class TestClass(object):val1 = 100def __init__(self):self.val2 = 200def fcn(self,val = 400):val3 = 300self.val4 = valself.val5 = 500 if __name__ == '__main__':inst = TestClass()print TestClass.val1print inst.val1print inst.val2print inst.val3print inst.val4    print inst.val5

这里,val1是类变量,可以由类名直接调用,也可以有对象来调用;

val2是成员变量,可以由类的对象来调用,这里可以看出成员变量一定是以self.的形式给出的,因为self的含义就是代表实例对象;

val3不是成员变量,它只是函数fcn内部的局部变量;

val4和val5也都不是成员变量,虽是以self.给出,但并没有在构造函数中初始化。

再看看下面的代码(#号后面的是运行结果):

    inst1 = TestClass()inst2 = TestClass()print TestClass.val1 # 100print inst1.val1     # 100inst1.val1 = 1000    print inst1.val1     # 1000print TestClass.val1 # 100TestClass.val1 =2000 print inst1.val1     # 1000print TestClass.val1 # 2000print inst2.val1     # 2000     inst3 = TestClass()  print inst3.val1     # 2000

可以发现:python的类变量和C++的静态变量不同,区别在于python的对象使用类变量时,会进行一次内存拷贝。python中,类本身拥有自己的类变量(保存在内存),当对象第一次调用类变量时,会将当前类变量拷贝一份给这个对象,当前类变量的值是多少,这个对象拷贝得到的类变量的值就是多少;而且,通过对象来修改类变量,并不会影响其他对象的类变量的值,因为大家都有各自的副本,更不会影响类本身所拥有的那个类变量的值;只有类自己才能改变类本身拥有的类变量的值。

有一点值得注意:对象的类变量是什么时候初始化的(从类的类变量拷贝过来)?通过上例中inst2.val1的打印结果是2000可以发现,对象的类变量并不是构造对象的时候初始化的,而是在第一次通过对象调用该类变量的时候从类变量当前的值拷贝过来的。此后便互不影响。

python的类变量和成员变量相关推荐

  1. python的类变量和成员变量用法_Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析...

    本文实例讲述了Python面向对象程序设计类变量与成员变量.类方法与成员方法用法.分享给大家供大家参考,具体如下: 类变量与成员变量 在类中声明的变量我们称之为类变量[静态成员变量], 在init() ...

  2. python 类函数 成员函数_python中的类函数、静态函数、成员函数以及类变量、成员变量...

    1 classMethodDemo():2 classVar = 'This is a class variable' #类变量,可在类函数或者成员函数中引用,为所有实例共有的 3 def __ini ...

  3. python类成员变量_Python 类变量和成员变量

    Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...

  4. Python 类变量,成员变量,静态变量,局部变量

    python中类变量和成员变量.局部变量总结 转载自:https://www.cnblogs.com/clarenceyang/p/9685543.html 作者: 勿忘-前行 class Membe ...

  5. Python构造函数、成员函数,类变量、成员变量和局部变量

    一直对这些概念比较混淆,今天理一下. 构造函数和成员函数 构造函数也被称为构造器,当创建对象的时候第一个被自动调用的函数,系统默认提供了一个无参的构造函数,语法如下: def __ init__(se ...

  6. Python基础-类变量和实例变量

    备忘: Python基础-类变量和实例变量 - 珞樱缤纷 - 博客园 python--类中的self到底有什么作用 - jvincent - 博客园 #深入剖析# Python中 __init__ 函 ...

  7. 类变量、成员变量、局部变量介绍说明

    类变量.成员变量.局部变量 类变量(也叫静态变量)是类中独立于方法之外的变量,用static 修饰.(static表示"全局的"."静态的",用来修饰成员变量和 ...

  8. Python中的类变量和成员变量

    代码演示: class Test(object):a = 100 # a是类变量,可以由类名直接调用,也可以由类的对象来调用def __init__(self):self.b = 200 # b是成员 ...

  9. Python风格总结:Python基础-类变量和实例变量

    1. 类变量和实例变量 在Python Tutorial中对于类变量和实例变量是这样描述的: Generally speaking, instance variables are for data u ...

最新文章

  1. 高文院士:顶级AI人才缺乏,但不必搞全民运动,到处成立人工智能学院
  2. mongodb 持久化 mysql_scrapy数据持久化存储(MySQL、MongoDB)
  3. excel分类_Excel数据处理学习(七)使用分类汇总
  4. AutoConfigurationImportSelector是什么?
  5. 运算放大器基本公式_运算放大器 - 产生的背景和解决的问题
  6. 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...
  7. axure弹窗关闭_干货来袭,Axure插入图标的几种办法
  8. jquery绑定方法on的
  9. 问题十三:怎么用ray tracing画个球
  10. Nginx安装与常用配置
  11. JS学习总结(9)——String
  12. AspNetPager组件
  13. pandas 保存Excel 解决科学计数法问题
  14. 格子刷油漆c++dp(最详细)
  15. 马云:中国企业不缺创新缺管理思想
  16. Golang 双链表(Doubly Linked List)
  17. 润达软件-督查督办管理系统
  18. TesterHome android app 编写历程(四)
  19. mac软件推荐(适用m1)
  20. Win10如何禁止自动更新?Win10禁止更新又恢复怎么办?

热门文章

  1. 空间计量 python_PySAL:Python空间计量分析库使用手册(一)
  2. git 命令详解——checkout
  3. 蓝牙通信,完整的通信流程!
  4. 天气API-----开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供)
  5. 矢量数据 秦岭淮河_秦岭—淮河一线的范围划分
  6. protege类的关系_protege5.2介绍
  7. 目标检测YOLO实战应用案例100讲-基于深度学习的红外目标检测研究与应用
  8. DCDC开关电源电磁兼容(三)电源EMI滤波器相关基础知识(插入损耗与lisn50Ω阻抗的关系)
  9. signature=959e598d2ffb94a32cc0a92ca6d43637,Modelling digital thunder
  10. React(六) —— redux