zoukankan      html  css  js  c++  java
  • Python——成员变量

    一、类变量

    在类命名空间内定义的变量就属于类变量,python允许使用类来修改、读取类变量。

    例:

    class a:
    	b = '我是类变量'
    	def c(self):
    		print (a.b)	# 通过类访问类变量b
    
    print (a.b)    # 通过类访问类变量,打印 我是类变量
    
    A = a()
    A.c()    # 打印 我是类变量
    
    a.b = '我被修改了'  # 修改类变量
    A.c()  # 打印 我被修改了

    其实,Python也可以使用对象来访问所属类的变量,实际上通过对象访问类变量,本质还是通过类名访问类变量,例:

    class a:
    	b = '我是类变量'
    	def c(self):
    		print (self.b)	# self访问a类的类变量,self代表c方法的调用者a对象
    
    A = a()
    print (A.b)    # 通过对象访问类变量b,打印 我是类变量
    
    A.c()    # 打印 我是类变量
    
    A.b = '我又被修改了'  # 通过对象修改类变量
    A.c()  # 如果通过对象对类变量进行修改,那么访问这些对象的类变量也会读到修改后的值 打印 我又被修改了
    print (A.b)  # 打印 我又被修改了
    
    print (a.b)  # 通过类访问类变量,可以看出程序对对象的类变量修改了值,只会在该对象中生效,打印 我是类变量
    

      

    二、实例变量

    先看一段代码:

    class a:
    	b = '我是类变量'
    	def c(self,b):
    		self.b = b
    		print (self.b)
    
    A = a()
    A.c('我是实例变量')    # 打印 我是实例变量
    print (A.b)    # 打印 我是实例变量
    
    print (a.b)    # 打印 我是类变量
    
    a.b = '我怎么又被修改了!'  # 通过类修改类变量
    A.c('我仍然是实例变量!')  # 不会对实例变量造成任何影响,打印 我仍然是实例变量!
    

    在上面代码中,

    1、self.b = b 看上去像是对类变量进行赋值,但实际上是重新定义了两个实例变量,print (A.b)由于在调用a对象的c()方法之后,该对象本身已经有b这个实例变量,程序会输出实例变量;

    2、print (a.b)通过a来访问他的b变量,此时才是在访问类变量;

    3、最后两段代码,即使程序通过类修改类变量,也不会对实例变量造成任何影响。

    同样,对一个对象的实例进行修改,也不会影响到类变量和其他对象的实例变量,例:

    class a:
    	b = '我是类变量'
    	def c(self):
    		self.b = '我是实例变量'
    		print (self.b)
    
    A = a()
    B = a()
    A.c()    # 打印 我是实例变量
    B.c()     # 打印 我是实例变量
    A.b = '我是实例变量,我被修改了'
    print (A.b)   # 只是对这个对象的实例变量b进行了修改,打印 我是实例变量,我被修改了
    print (B.b)    # 不会影响到其他对象的实例变量,打印 我是实例变量
    print (a.b)    # 也不会对类变量有影响,打印 我是类变量
    

     

  • 相关阅读:
    洛谷P1586 四方定理
    洛谷P3807 【模板】卢卡斯定理exgcd
    扩展中国剩余定理详解
    HDU 1573 X问题
    POJ 2891 Strange Way to Express Integers
    中国剩余定理详解
    java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决方案
    MySQL对于有大量重复数据表的处理方法
    【一牛鸣】下周或触发新变盘9.16
    Django里面的RequestContext
  • 原文地址:https://www.cnblogs.com/mingmingming/p/11142903.html
Copyright © 2011-2022 走看看