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中用sleep()方法操作时间的教程
May 22 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
python中的&&及||的实现示例
Aug 07 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
Aug 13 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
Python openpyxl 插入折线图实例
Apr 17 Python
详解python变量与数据类型
Aug 25 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 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和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JS表的模拟方法
2015/02/05 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
使用pdb模块调试Python程序实例
2015/06/02 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
python实现图片素描效果
2020/09/26 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
公务员个人自我评价分享
2013/11/06 职场文书
小学少先队活动方案
2014/02/18 职场文书
《猫》教学反思
2014/02/26 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
考试作弊检讨书
2015/01/27 职场文书
办公用品质量保证书
2015/05/11 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL