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> ...
随机推荐
- Objective-C Properties
Objective-C Properties Apple introduced properties, a combination of new compiler directivesand a ne ...
- python_MachineLearning_感知机PLA
感知机:线性二类分类器(linear binary classifier) 感知机(perceptron)是二类分类的线性模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值.感知机对 ...
- anchor_target_layer中的bounding regression
在anchor_target层,这两行是计算bounding regression代码: bbox_targets = np.zeros((len(inds_inside), 4), dtype=np ...
- babun
Table of Contents 1. 环境 2. 检查/更新 3. 包管理 4. 版本管理 Git 4.1. 设置姓名邮箱(全局方式) 4.2. 添加 SSH 4.3. 链接测试 4.4. 权 ...
- 第2节 hive基本操作:9、hive当中创建外部表的语法及外部表的操作&分区表的语法和操作
外部表: 外部表说明: 外部表因为是指定其他的hdfs路径的数据加载到表当中来,所以hive表会认为自己不完全独占这份数据,所以删除hive表的时候,数据仍然存放在hdfs当中,不会删掉 管理表和外部 ...
- Chrome插件:微信公众号自动登录(chrome.extension)
manifest.json: { "manifest_version": 2, "name": "WX.AutoLogin", " ...
- C++命名空间、标准库(std,全局命名空间)
背景 别人遇到的问题: C++ 全局变量不明确与 using namespace std 冲突 我遇到的问题与他相似,函数调用冲突 using namespace std; class compare ...
- centos7配置静态IP步骤
centos7按照初始安装时候的developer类型一路装好,在vmware里已经设置为bridge模式,按理说是会自动按照DHCP联网成功的,结果却发现连网卡都没有激活,这里记录下. 1:我要把L ...
- <Redis> 入门X 分布式锁
分布式其实就是多进程的程序,当多个进程访问一个资源,会造成问题: 1.资源共享的竞争问题 2.数据的安全性 分布式锁的解决方案: 1.怎么去获取锁 数据库 zookeeper redis 2.怎么释放 ...
- [Python3网络爬虫开发实战] 1.9.6-Gerapy的安装
Gerapy是一个Scrapy分布式管理模块,本节就来介绍一下它的安装方式. 1. 相关链接 GitHub:https://github.com/Gerapy 2. pip安装 这里推荐使用pip安装 ...