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的动态重新封装的教程
Apr 11 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
Python中整数的缓存机制讲解
Feb 16 Python
详解python持久化文件读写
Apr 06 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
Python爬虫学习之翻译小程序
Jul 30 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
Python创建数字列表的示例
Nov 28 Python
Python中json.dumps()函数的使用解析
May 17 Python
Python实现单例模式的5种方法
Jun 15 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
JAVA/JSP学习系列之七
2006/10/09 PHP
图形数字验证代码
2006/10/09 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
Python获取邮件地址的方法
2015/07/10 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python如何转换字符串大小写
2020/06/04 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
两年的个人工作自我评价
2014/01/10 职场文书
学校与家长安全责任书
2014/07/23 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
消防宣传标语大全
2015/08/03 职场文书