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。
python类变量以及应用场景的更多相关文章
- python 类变量 在多线程下的共享与释放问题
最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...
- Python 类变量和成员变量
Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...
- python 类变量 在多线程下的共享与释放问题-乾颐堂
最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...
- 第7.13节 案例详解:Python类变量
第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一. 定义函数dirp def dirp(iter): ret ...
- 第7.12节 可共享的Python类变量
第7.12节 可共享的Python类变量 一. 引言 在上节已经引入介绍了类变量和实例变量,类体中定义的变量为类变量,默认属于类本身,实例变量是实例方法中定义的self对象的变量,对于每个实例都 ...
- 关于python类变量和实例变量
今天在看python的类和实例的时候,突然发现了一个以前遗漏的点,也就是类变量和实例变量.首先需要理解一下类变量和实例变量的概念. 类全局变量:在类中定义,对类和由类生成的实例生效,如果通过方法对类变 ...
- Python类变量,实例变量,类方法,实例方法,静态方法的分析
Python作为动态语言,跟静态语言如c/c++有很大区别,其中的一个重要的特性就是Python的变量无需声明直接可用.同样,类的成员变量无需声明,直接可用.目的是为了动态语言跟灵活,在思路想到的时候 ...
- Python随机选择Maya场景元素
之前在公司参与的一个与国外合作的项目中,有一景需要动态.随机地选取场景中的一些物体,同时显示指定材质,当时是用Houdini的节点+Hscript 解决的: 今天用简洁优雅的Python在Maya中写 ...
- 使用Python操作Redis应用场景
1. 安装pyredis 首先安装pip 1 2 3 4 5 6 7 8 <SHELL># apt-get install python-pip ...... <SHELL> ...
随机推荐
- YOLO模型对图片中车辆的识别比对
1,模型对比结果 ² 标准Yolo v3模型 ² 标准Yolo v3 tiny模型 ² 标准Yolo v2 tiny模型 ² 用户训练yolo ...
- spring.net应用
经过一段时间的调试,终于把spring.net中关于aop的方面给做个了一个比较完整的Demo.包含异常日志和性能日志.spring.net和log4net配置. http://files.cnblo ...
- 计算机网络、OSI模型、TCP/IP族
一.计算机网络分类 1.按通信距离分类: 局域网:LAN,10m-1000m,房间.校园: 城域网:MAN,10km,城市: 广域网:WAN,100km以上,国家.全球. 二.OSI(Open Sys ...
- shell脚本的练习
创建一个以.sh结束的文件. 规则: 文件的头部使用#!/bin/sh 开头 这个是一个标识的作用,告诉使用哪种脚本来执行 echo 用来向命令行来输出的东西
- freopen()重定向的打开和关闭
freopen函数 功能 使用不同的文件或模式重新打开流,即重定向. 实现重定向,把预定义的标准流文件定向到由path指定的文件中.(直观感觉/实际操作都像是把文件定向到流,难道是说,对流来说就是重定 ...
- 借助百度地图API制作企业百度地图
做网站需要插入地图,可以借助百度地图API,具体步骤如下: 1.打开百度地图API的网址: http://api.map.baidu.com/lbsapi/creatmap/ 2.设置中心点 3. ...
- http返回状态码错误
415 数据格式不正确 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式 后台用json接收 1.将表单数据转换成json数据 2.设置contentType:& ...
- Shiro框架 (原理分析与简单实现)
Shiro框架(原理分析与简单实现) 有兴趣的同学也可以阅读我之前分享的:Java权限管理(授权与认证)CRM权限管理 (PS : 这篇博客里面的实现方式没有使用框架,完全是手写的授权与认证,可以 ...
- Linux忘记root密码,密码找回,图片展示
忘记root密码 CentOS 7参考地址如下:https://www.baidu.com/s?wd=CentOS7+%E6%89%BE%E5%9B%9Eroot%E5%AF%86%E7%A0%81& ...
- Django的admin源码浅析和模仿
admin模块: admin提供了5种接口 list_display, 指定数据展示字段,不能放多对多字段