• Python中的类变量和成员变量


    本文实例形式讲解了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) # 100
        print(inst.val1) # 100
        print(inst.val2) # 200
        #print(inst.val3)
        #print(inst.val4)
        #print(inst.val5)
        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
    
    

    这里,val1是类变量,可以由类名直接调用,也可以由对象来调用;
    val2是成员变量,可以由类的对象来调用,这里可以看出成员变量一定是以self.的形式给出的,因为self的含义就是代表实例对象;
    val3不是成员变量,它只是函数fcn内部的局部变量;
    val4和val5也都不是成员变量,虽是以self.给出,但并没有在构造函数中初始化。

    可以发现:Python的类变量和Java的类变量(静态变量)不同,类本身拥有自己的类变量(保存在内存)。当通过对象名读取类变量时,读取的实际上是该类所持有的类变量。一旦通过对象名写入类变量时,实际上Python后台立刻拷贝类变量的副本并交给该对象进行写入操作。从那刻起,该对象读取和写入的都是自身持有的类变量的副本。

  • 相关阅读:
    robot 如何定义用户关键字、变量
    appium 启动参数配置
    mock模拟接口返回数据
    jenkins 中邮件发送
    python中正则表达式
    python中操作数据库
    pytest和unittest中参数化如何做
    learnku社区分享
    FOR ALL ENTRIES IN的使用
    BAPI_DELIVERYPROCESSING_EXEC
  • 原文地址:https://www.cnblogs.com/chenjo/p/15920751.html
Copyright © 2020-2023  润新知