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 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
numpy自动生成数组详解
Dec 15 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
Python将字典转换为XML的方法
Aug 01 Python
Python如何用re模块实现简易tokenizer
May 02 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定时自动生成静态HTML的实现代码
2010/06/20 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
python操作文件的参数整理
2019/06/11 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
企业节能减排实施方案
2014/03/19 职场文书
公司财务部岗位职责
2015/04/14 职场文书
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB