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发送各种形式的邮件的方法汇总
Nov 09 Python
Python selenium如何设置等待时间
Sep 15 Python
Django 路由系统URLconf的使用
Oct 11 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
pandas.read_csv参数详解(小结)
Jun 21 Python
简单了解python代码优化小技巧
Jul 08 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
python正则表达式匹配IP代码实例
Dec 28 Python
Python定时器线程池原理详解
Feb 26 Python
Python reversed函数及使用方法解析
Mar 17 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
微信小程序实现循环动画效果
2018/07/16 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
python分割和拼接字符串
2013/11/01 Python
Python二分查找详解
2015/09/13 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
pygame实现飞机大战
2020/03/11 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
公安学专业求职信
2014/07/27 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
2019同学聚会主持词
2019/05/06 职场文书
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
python playwright之元素定位示例详解
2022/07/23 Python