python的类变量和成员变量用法实例教程


Posted in Python onAugust 25, 2014

本文实例形式讲解了python的类变量和成员变量用法,对于Python程序设计有一定的参考价值。分享给大家供大家参考。具体如下:

先看看下面这段代码:

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.给出,但并没有在构造函数中初始化。

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

inst1 = TestClass()
inst2 = TestClass()

print TestClass.val1 # 100
print inst1.val1   # 100

inst1.val1 = 1000  
print inst1.val1   # 1000
print TestClass.val1 # 100

TestClass.val1 =2000 
print inst1.val1   # 1000
print TestClass.val1 # 2000

print inst2.val1   # 2000   

inst3 = TestClass() 
print inst3.val1   # 2000

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

希望本文所述实例对于大家理解和掌握Python的类变量和成员变量用法有所帮助。

Python 相关文章推荐
布同 统计英文单词的个数的python代码
Mar 13 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
python正则实现计算器功能
Dec 14 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
python 格式化输出百分号的方法
Jan 20 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
Django和Flask框架优缺点对比
Oct 24 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
python属于解释型语言么
Jun 15 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
django有哪些好处和优点
Sep 01 Python
Python写的创建文件夹自定义函数mkdir()
Aug 25 #Python
Python中的startswith和endswith函数使用实例
Aug 25 #Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 #Python
Python对小数进行除法运算的正确方法示例
Aug 25 #Python
Python实现的一个自动售饮料程序代码分享
Aug 25 #Python
Python中请使用isinstance()判断变量类型
Aug 25 #Python
Python中变量交换的例子
Aug 25 #Python
You might like
php查询mssql出现乱码的解决方法
2014/12/29 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python基于pillow判断图片完整性的方法
2016/09/18 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
do you have any Best Practice for testing
2016/06/04 面试题
党员创先争优公开承诺书
2014/03/28 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
全运会口号
2014/06/20 职场文书
自我检讨书范文
2015/01/28 职场文书
行政上诉状范文
2015/05/23 职场文书
感恩教育观后感
2015/06/17 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang