参考文献:http://www.jb51.net/article/54286.htm

转载、引用请附上参考文献的链接。

(1)位置的区别

先看看下面这段代码:

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

这里,val1是类变量,可以由类名直接调用,也可以有对象来调用;
val2是成员变量,可以由类的对象来调用,这里可以看出成员变量一定是以self.的形式给出的,因为self的含义就是代表实例对象;
val3不是成员变量,它只是函数fcn内部的局部变量;
val4和val5也都不是成员变量,虽是以self.给出,但并没有在构造函数中初始化。

(2)如何修改这些变量、类变量和C++中的静态变量的区别

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

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

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

最新文章

  1. react-echarts之折线图的显示
  2. 移动端阻止body滚动
  3. (转) How to Train a GAN? Tips and tricks to make GANs work
  4. Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念
  5. 【实(dou)力(bi)首(mai)发(meng)】第四次CCF软件能力认证题解
  6. Kd-tree算法原理
  7. 李洪强漫谈iOS开发[C语言-042]-简单计算器
  8. How to enable $Admin Shares in Windows 7
  9. [转载]MongoDB开发学习(1)开天辟地,经典入门
  10. 后台数据download成excel的方法(controller/action)
  11. 模拟一个shuffle
  12. 将逗号分隔 的字符串转化成List
  13. 找到链表的倒数第K位
  14. Swift基础之对FMDB第三方的使用方法
  15. Python os.removedirs() 和shutil.rmtree() 用于删除文件夹
  16. gcd以及exgcd入门讲解
  17. no_namespace rename 在C++中是什么意思啊
  18. java与C++相比增加和缺少的特性--持续更新
  19. Java 之集合框架 中(10)
  20. Vue2.5入门-3

热门文章

  1. [PyTorch]PyTorch/python常用语法/常见坑点
  2. Python 实现C语言 while(scanf("%d%d", &a, &b) != EOF) 语句功能
  3. jmeter随笔
  4. 解决httpclient因为保持永久长连接造成连接吊死的问题
  5. 《Think in Java》(十七)容器深入研究
  6. 实例化后的map的默认值
  7. zsh 安装powerline 主题特效
  8. python 爬虫005-爬虫实例
  9. yii2手动添加插件PHPExcel
  10. Ansible 小手册系列 七(Ad-hoc)