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使用mailbox打印电子邮件的方法
Apr 30 Python
python 性能提升的几种方法
Jul 15 Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
对Django url的几种使用方式详解
Aug 06 Python
wxPython色环电阻计算器
Nov 18 Python
Python可以实现栈的结构吗
May 27 Python
python如何绘制疫情图
Sep 16 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
浅谈Python数学建模之固定费用问题
Jun 23 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
php4的session功能评述(一)
2006/10/09 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
如何高效使用Python字典的方法详解
2017/08/31 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
老公保证书范文
2014/04/29 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript