zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Docker Registry 管理镜像
    Dockerfile 构建镜像
    制作docker镜像
    docker 使用及基本命令
    centos7 安装 docker
    spring-boot-devtools 热部署
    mysql库复制
    windows下安装和设置gradle
    springboot项目搭建
    下载和安装
  • 原文地址:https://www.cnblogs.com/kramer/p/6043864.html
Copyright © 2011-2022 走看看