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 translator使用实例
Sep 06 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
Python2与Python3的区别实例总结
Apr 17 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
python集合的创建、添加及删除操作示例
Oct 08 Python
Pytorch转tflite方式
May 25 Python
Selenium 配置启动项参数的方法
Dec 04 Python
python如何在word中存储本地图片
Apr 07 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
node.js入门教程
2014/06/01 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
javascript时间差插件分享
2016/07/18 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python实现的knn算法示例
2018/06/14 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
圣诞节红领巾广播稿
2014/02/03 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2015年团支书工作总结
2015/04/03 职场文书
付款证明模板
2015/06/19 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python