zoukankan      html  css  js  c++  java
  • Python的类变量和实例变量

    python: Class and Object Variables 类变量 实例变量
    这篇博客说的很好特转之

    python的类中,类的属性有两种作用域:类变量,实例变量。

    类似于java中的static变量与一般变量的区别。

    类变量属于整个class所共享,而实例变量则仅仅属于特定对象实例。

    类变量和实例变量在操作上的区别

    1. 访问权限

      • 类变量通过类名点操作访问也可以通过实例点操作访问className.var objectName.var

      • 实例变量只可以通过实例名点操作访问 objectName.var

    1. 类变量修改后的表现

      • 通过className.var修改类变量,该类和所有实例所共享的数据将被修改,再次通过类或实例访问得到的将是新的数据。

      • 通过objectName.var修改类变量,其效果将仅仅作用在该实例上,再次通过类或其它实例访问得到的仍然是旧的数据。但这一修改方式将对该类变量实例化,其结果是该实例将得到一个单独的该变量拷贝,此后此对象不再与类共享改名称的变量(实例化一说,是个人对这一现象的定义,还未找到权威描述)

    附加测试代码如下

    class classA:
        var1=
    0
        def __init__(self,text
    ):
            self.var2=text
    #var2 is a instance variable
    ##       self.var1=init_value #it will make var1 as a instance variable
        def show(self
    ):
            print self.var1, self.var2
        def set_var1(self, x
    ):
            self.var1=x


    oa=classA(
    'a'
    )
    ob=classA(
    'b'
    )
    print
    '---init---'
    oa.show
    ()
    ob.show
    ()
    print classA.var1,
    'classA'
    classA.var1=
    1
    print
    '---after classA.var1=1---'
    oa.show
    ()
    ob.show
    ()
    print classA.var1,
    'classA'
    oa.var1=
    2
    print
    '---after oa.var1=2---'
    oc=classA('c'
    )
    oa.show
    ()
    ob.show
    ()
    oc.show
    ()
    print classA.var1,
    'classA'
    oa.set_var1(3
    )
    ob.set_var1(4
    )
    print
    '---after oa.set_var1(3),ob.set_var1(4)---'
    oa.show
    ()
    ob.show
    ()
    oc.show
    ()
    print classA.var1,
    'classA'
    classA.var1=
    5
    print
    '---after classA.var1=5---'
    oc=classA('c'
    )
    oa.show
    ()
    ob.show
    ()
    oc.show
    ()
    print classA.var1,
    'classA'

  • 相关阅读:
    js去除字符串空格(空白符)
    jq以固定开头的class属性的名称
    day--38 mysql表的完整性约束总结
    day--39-MySQL的多表查询
    day--40 mysql-视图,触发器,存储过程,函数总结
    day--41 mysql索引原理与慢查询优化
    day--42 前端基础小结
    day--43 HTML标签和CSS基本小结
    day46----JavaScript的函数及对象小结
    JavaScript正则表达式
  • 原文地址:https://www.cnblogs.com/dajianshi/p/2827102.html
Copyright © 2011-2022 走看看