zoukankan      html  css  js  c++  java
  • Python类变量

    1.概述

    可以发现:python的类变量和C++的静态变量不同,并不是由类的所有对象共享。 类本身拥有自己的类变量(保存在内存),当一个TestClass类的对象被构造时, 会将当前类变量拷贝一份给这个对象,当前类变量的值是多少,这个对象拷贝得到的类变量的值就是多少;而且,通过对象来修改类变量,并不会影响其他对象的类变量的值 ,因为大家都有各自的副本,更不会影响类本身所拥有的那个类变量的值;只有类自己才能改变类本身拥有的类变量的值

    class TestClass(object):
        # 类变量
        val1 = 100
        def __init__(self):
            # 成员变量
            self.val2 = 200
        def fcn(self, val=400):
            val3 = 300
            self.val4 = val
            self.val5 = 500
    inst = TestClass()
    
    print(TestClass.val1)  # 100
    print(inst.val1)   # 100
    print(inst.val2)    # 200
    # print(inst.val3)  # AttributeError: 'TestClass' object has no attribute 'val3'
    # print(inst.val4)    # AttributeError: 'TestClass' object has no attribute 'val4'
    # print(inst.val5)  # AttributeError: 'TestClass' object has no attribute 'val5'
    

      inst访问不到val3、val4、val5

    inst1 = TestClass()
    inst2 = TestClass()
    
    print(TestClass.val1)  # 100
    print(inst1.val1)  # 100
    
    inst1.val1 = 1000
    print(inst1.val1)  # 1000
    print(TestClass.val1)  # 100
    
    print(inst2.val1)  # 100
    # inst2.val1=22222
    TestClass.val1 = 2000   # 只有类自己才能改变类本身拥有的类变量的值。
    print(inst2.val1)  # 2000     没有重新赋值,跟类变量保存一致
    
    print(TestClass.val1)  # 2000
    print(inst1.val1)  # 1000              被重新赋值后,就跟类变量没关系了
    
    inst3 = TestClass()
    print(inst3.val1)  # 2000
    

      

    类方法的作用:(不依赖于对象)

    因为只能访问类属性和类方法,所以,可以在对象创建之前如果需要做一些功能(动作),就可以放在类方法中

    私有属性只能通过类方法,在类内部进行访问

    静态方法:很类似类方法

    1.需要装饰器@staticmethod

    2.静态方法是无需传递参数(如,cls,self)

    3.静态方法里面也只能访问类的属性和方法,而对象的属性和方法是无法访问的(即,用self.xx访问属性和访问方法是不可以的)

    4.加载时机同类方法,即在对象还没有创建时,就已经加载了

     

    选D

  • 相关阅读:
    Zookeeper 选举机制
    Hadoop Yarn任务调度器
    Hadoop Yarn工作机制 Job提交流程
    Hadoop 切片机制
    Hadoop MapReduce工作流程
    Hadoop HDFS读写数据流程
    数据仓库 拉链表
    高动态范围照片*5
    Java实现的窗口计算器
    拍摄制作星轨拖尾视频 之 前期拍摄
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14167881.html
Copyright © 2011-2022 走看看