类变量是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。

python类变量以及应用场景的更多相关文章

  1. python 类变量 在多线程下的共享与释放问题

    最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...

  2. Python 类变量和成员变量

    Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...

  3. python 类变量 在多线程下的共享与释放问题-乾颐堂

    最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...

  4. 第7.13节 案例详解:Python类变量

    第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一.    定义函数dirp def dirp(iter): ret ...

  5. 第7.12节 可共享的Python类变量

    第7.12节 可共享的Python类变量 一.    引言 在上节已经引入介绍了类变量和实例变量,类体中定义的变量为类变量,默认属于类本身,实例变量是实例方法中定义的self对象的变量,对于每个实例都 ...

  6. 关于python类变量和实例变量

    今天在看python的类和实例的时候,突然发现了一个以前遗漏的点,也就是类变量和实例变量.首先需要理解一下类变量和实例变量的概念. 类全局变量:在类中定义,对类和由类生成的实例生效,如果通过方法对类变 ...

  7. Python类变量,实例变量,类方法,实例方法,静态方法的分析

    Python作为动态语言,跟静态语言如c/c++有很大区别,其中的一个重要的特性就是Python的变量无需声明直接可用.同样,类的成员变量无需声明,直接可用.目的是为了动态语言跟灵活,在思路想到的时候 ...

  8. Python随机选择Maya场景元素

    之前在公司参与的一个与国外合作的项目中,有一景需要动态.随机地选取场景中的一些物体,同时显示指定材质,当时是用Houdini的节点+Hscript 解决的: 今天用简洁优雅的Python在Maya中写 ...

  9. 使用Python操作Redis应用场景

    1. 安装pyredis 首先安装pip   1 2 3 4 5 6 7 8 <SHELL># apt-get install python-pip ...... <SHELL> ...

随机推荐

  1. YOLO模型对图片中车辆的识别比对

    1,模型对比结果 ²        标准Yolo v3模型 ²        标准Yolo v3 tiny模型 ²        标准Yolo v2 tiny模型 ²        用户训练yolo ...

  2. spring.net应用

    经过一段时间的调试,终于把spring.net中关于aop的方面给做个了一个比较完整的Demo.包含异常日志和性能日志.spring.net和log4net配置. http://files.cnblo ...

  3. 计算机网络、OSI模型、TCP/IP族

    一.计算机网络分类 1.按通信距离分类: 局域网:LAN,10m-1000m,房间.校园: 城域网:MAN,10km,城市: 广域网:WAN,100km以上,国家.全球. 二.OSI(Open Sys ...

  4. shell脚本的练习

    创建一个以.sh结束的文件. 规则: 文件的头部使用#!/bin/sh 开头   这个是一个标识的作用,告诉使用哪种脚本来执行 echo 用来向命令行来输出的东西

  5. freopen()重定向的打开和关闭

    freopen函数 功能 使用不同的文件或模式重新打开流,即重定向. 实现重定向,把预定义的标准流文件定向到由path指定的文件中.(直观感觉/实际操作都像是把文件定向到流,难道是说,对流来说就是重定 ...

  6. 借助百度地图API制作企业百度地图

    做网站需要插入地图,可以借助百度地图API,具体步骤如下: 1.打开百度地图API的网址:   http://api.map.baidu.com/lbsapi/creatmap/ 2.设置中心点 3. ...

  7. http返回状态码错误

    415 数据格式不正确 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式 后台用json接收 1.将表单数据转换成json数据 2.设置contentType:& ...

  8. Shiro框架 (原理分析与简单实现)

    Shiro框架(原理分析与简单实现) 有兴趣的同学也可以阅读我之前分享的:Java权限管理(授权与认证)CRM权限管理   (PS : 这篇博客里面的实现方式没有使用框架,完全是手写的授权与认证,可以 ...

  9. Linux忘记root密码,密码找回,图片展示

    忘记root密码 CentOS 7参考地址如下:https://www.baidu.com/s?wd=CentOS7+%E6%89%BE%E5%9B%9Eroot%E5%AF%86%E7%A0%81& ...

  10. Django的admin源码浅析和模仿

    admin模块: admin提供了5种接口 list_display, 指定数据展示字段,不能放多对多字段