Home  >  Article  >  Backend Development  >  python的类变量和成员变量用法实例教程

python的类变量和成员变量用法实例教程

WBOY
WBOYOriginal
2016-06-16 08:42:331070browse

本文实例形式讲解了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的类变量和成员变量用法有所帮助。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn