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。

原文地址:https://www.cnblogs.com/kramer/p/6043864.html