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 相关文章推荐
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
Python常用小技巧总结
Jun 01 Python
Python中 Lambda表达式全面解析
Nov 28 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
Python学习笔记之For循环用法详解
Aug 14 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
python统计字符的个数代码实例
Feb 07 Python
python opencv进行图像拼接
Mar 27 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
pycharm软件实现设置自动保存操作
Jun 08 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
python画条形图的具体代码
Apr 20 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新手上路(十)
2006/10/09 PHP
第十三节--对象串行化
2006/11/16 PHP
10条PHP编程习惯助你找工作
2008/09/29 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
js计算精度问题小结
2013/04/22 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
python判断字符串是否是json格式方法分享
2017/11/07 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
群胜软件Java笔试题
2012/09/29 面试题
简历中个人求职的自我评价模板
2013/11/29 职场文书
周年庆促销方案
2014/03/15 职场文书
公司任命书范本
2014/06/04 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
公司搬迁通知
2015/04/20 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
Android 中的类文件和类加载器详情
2022/06/05 Java/Android