• python类变量以及应用场景


    类变量是python 中class 的变量,区别于实例的变量。我们通过一些例子具体了解一下

    先看下面的例子

    >>> class Demo(object):
    ...     v1 = 1
    ... 
    >>> d1 = Demo()
    >>> d2 = Demo()
    >>> 
    >>> d1.v1 == d2.v1 == 1 == Demo.v1
    True
    

    我们定义了一个类Demo,该类有类变量v1 = 1。 我们实例化了两个object d1,d2, 可以看到d1.v1 , d2,v1 都等于1. ok,我们可以得知类变量的第一个特性

    类变量可以通过类直接访问,并且如果实例中没有改写该变量,也可以从实例访问
    

    再看下面的例子

    >>> d1.v1=2
    >>> d1.v1
    2
    >>> d2.v1 == Demo.v1 == 1
    True
    

    我们在实例d1中改写了变量,可以发现d1.v1确实变了,但是d2和Demo的v1属性仍然是1. 可以得出第二个结论

    实例的变量作用域可以覆盖类变量的作用域。但实例的变量是跟该实例相关联的,不会影响其它实例以及类
    

    再继续看下一个例子

    >>> Demo.v1=100
    >>> d1.v1
    2
    >>> d2.v1
    100
    >>> Demo.v1
    100
    

    可以得出第三个结论

    对类变量的更改,会在所有实例中体现出来。
    

    类变量其实非常简单,重要的是了解什么时候可以用它。举个例子, 我们设计一个Phone, 它有个属性是brand代表品牌。因为apple手机比较火... 所以我们设定一个类属性,值为apple。 但是毕竟其它品牌的手机也存在。。 所以在实例化的过程中可以明确指定该实例的brand属性

    class Phone(object):
        
        brand = 'apple'
        def __init__(self, brand=None):
            if brand :
                self.brand = brand
    

    这样,如果在实例化的过程中强制指定了手机的品牌,则该手机的品牌就是你指定的。否则, 是默认的apple。

  • 相关阅读:
    一次有益的敏捷XP失败
    web拖动Drag&Drop原理
    一次有益的敏捷尝试
    一次有益的敏捷XP失败
    异地分布式敏捷软件开发探讨分析
    web拖动Drag&Drop原理
    XP中一些基本概念的简介
    XP中的重要惯例和规则
    异地分布式敏捷软件开发探讨分析
    PySide教程:第一个PySide应用
  • 原文地址:https://www.cnblogs.com/kramer/p/6043864.html
Copyright © 2020-2023  润新知