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中的JSON模块
Apr 08 Python
图文详解WinPE下安装Python
May 17 Python
利用Python破解验证码实例详解
Dec 08 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
对python3中, print横向输出的方法详解
Jan 28 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
Python 串口读写的实现方法
Jun 12 Python
python使用递归的方式建立二叉树
Jul 03 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
Tensorflow实现将标签变为one-hot形式
May 22 Python
python实现简单的五子棋游戏
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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
PHP实现懒加载的方法
2015/03/07 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
几种响应式文字详解
2017/05/19 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python数组复制拷贝的实现方法
2015/06/09 Python
python批量获取html内body内容的实例
2019/01/02 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Django操作session 的方法
2020/03/09 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Python定义一个Actor任务
2020/07/29 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
女儿十岁生日答谢词
2014/01/27 职场文书
实习老师离校感言
2014/02/03 职场文书
趣味运动会活动方案
2014/02/12 职场文书
2014年体育部工作总结
2014/11/13 职场文书
务虚会发言材料
2014/12/25 职场文书
安全责任书
2015/01/29 职场文书
金榜题名主持词
2015/07/02 职场文书