• 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 TestClass.val2 #会报错。类不能访问成员变量
    print inst.val2 print inst.val3 #会报错 print inst.val4    #会报错 print inst.val5    #会报错

    val1是类变量,可以由类名直接调用,也可以由对象来调用;
    val2是成员变量,可以由类的对象来调用,这里可以看出成员变量一定是以self.的形式给出的,因为self的含义就是代表实例对象;如果__init__内的变量没有加self,那就变成一个__init__的局部变量;
    val3不是成员变量,它只是函数fcn内部的局部变量;
    val4和val5是成员变量,但并没有初始化,所以这里会报错

    这个是能正确运行的

    class TestClass(object):
      val1 = 100
       
      def __init__(self):
        self.val2 = 200
       
      def fcn(self,val = 400):
        val3 = 300
        self.val4 = val
        self.val5 = 500
      
    
      def add(self):
        self.fcn()
        result = self.val4 + self.val5
        return result
    
    
    if __name__ == '__main__':
      inst = TestClass()
      print inst.add()

    这个是不能正确运行的,因为fcn是对val4,val5初始化,这里没运行fcn就没初始化

    class TestClass(object):
      val1 = 100
       
      def __init__(self):
        self.val2 = 200
       
      def fcn(self,val = 400):
        val3 = 300
        self.val4 = val
        self.val5 = 500
      
    
      def add(self):
        # self.fcn()
        result = self.val4 + self.val5
        return result
    
    
    if __name__ == '__main__':
      inst = TestClass()
      print inst.add()

    概括的一个例子

    class TestClass(object):
      val1 = 100
       
      def __init__(self):
        self.val2 = 200
       
      def fcn(self,val = 400):
        val3 = 300
        self.val4 = val
        self.val5 = 500
      
    
      def add(self):
        self.val4 = 1
        self.val5 = 2
        result = self.val4 + self.val5
        return result
    
    
    if __name__ == '__main__':
      inst = TestClass()
      print inst.add()
      print inst.val4
      inst.fcn()
      print inst.val4

    运行出来的结果:

    可以看到,只要你对val4,val5初始化了就可以用实例访问,证明这个带self的是成员变量,不是局部变量。运行fcn后,对成员变量的值进行了改变。

  • 相关阅读:
    场曲——像差相关
    曲面探测器相关——查资料
    光学系统联合设计
    Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'
    Python3.x:pip install pymssql安装时出错
    Python3:自动发送账单邮件
    Python3:input()输入函数的用法
    Python3:读取配置dbconfig.ini(含有中文)显示乱码的解决方法
    python3:利用smtplib库和smtp.qq.com邮件服务器发送邮件
    CSS3:布局display属性的flex(弹性布局)
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7380279.html
Copyright © 2020-2023  润新知