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查找函数f(x)=0根的解决方法
May 07 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
python 打印对象的所有属性值的方法
Sep 11 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
pandas 小数位数 精度的处理方法
Jun 09 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
详解python中@的用法
Mar 27 Python
python3的print()函数的用法图文讲解
Jul 16 Python
tensorflow常用函数API介绍
Apr 19 Python
基于python实现获取网页图片过程解析
May 11 Python
python中HTMLParser模块知识点总结
Jan 25 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
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
php微信开发之谷歌测距
2018/06/14 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
jquery foreach使用示例
2013/09/12 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
Python 内置函数complex详解
2016/10/23 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
J2EE面试题集锦(附答案)
2013/08/16 面试题
预备党员入党自我评价范文
2014/03/10 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
公司介绍信范文
2015/01/31 职场文书
《颐和园》教学反思
2016/02/19 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript