zoukankan      html  css  js  c++  java
  • Python中的类变量和成员变量

    本文实例形式讲解了python的类变量和成员变量用法,对于Python程序设计有一定的参考价值。分享给大家供大家参考。具体如下:

    先看看下面这段代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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.给出,但并没有在构造函数中初始化。

    再看看下面的代码(#号后面的是运行结果):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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类的对象被构造时,会将当前类变量拷贝一份给这个对象,当前类变量的值是多少,这个对象拷贝得到的类变量的值就是多少;而且,通过对象来修改类变量,并不会影响其他对象的类变量的值,因为大家都有各自的副本,更不会影响类本身所拥有的那个类变量的值;只有类自己才能改变类本身拥有的类变量的值
  • 相关阅读:
    201521123088《JAVA程序设计》第8周学习总结
    201521123088《Java程序设计》第七周学习总结
    201521123088《Java程序设计》第6周学习总结
    201521123088《JAVA程序设计》第5周学习总结
    网络15软工个人作业5——软件工程总结
    alpha阶段个人总结
    软件工程网络15个人作业3--案例分析
    结对编程 201521123027
    软件工程网络15个人阅读作业2--提出问题(201521123027 陈龙)
    软件工程网络15个人阅读作业1(201521123027 陈龙)
  • 原文地址:https://www.cnblogs.com/double12gzh/p/10166242.html
Copyright © 2011-2022 走看看