python类变量与构造函数的使用
class MyObject(object):
x = 1
def __init__(self):
objectNum = 99
def changeNum(self, anotherNum):
self.objectNum = anotherNum
def showNum(self):
print("self.num = ", self.objectNum)
obj = MyObject()
obj.showNum()
Traceback (most recent call last):
File "class.py", line 24, in <module>
obj.showNum()
File "class.py", line 20, in showNum
print("self.num = ", self.objectNum)
AttributeError: 'MyObject' object has no attribute 'objectNum'
obj = MyObject()
obj.changeNum(10)
obj.showNum()
>>> self.num = 10
class ExampleClass:
def createObjectProperty(self, value):
self.newObjectProperty = value
class MyObject(object):
x = 1
def __init__(self):
self.objectNum = 99
def changeNum(self, anotherNum):
self.objectNum = anotherNum
def showNum(self):
print("self.num = ", self.objectNum)
class MyObject(object):
x = 1
def __init__(self):
self.objectNum = 99
def changeNum(self, anotherNum):
self.objectNum = anotherNum
def showNum(self):
print("self.num = ", self.objectNum) obj = MyObject() print(MyObject.x)
>>> 1
MyObject.x = 100
print(MyObject.x)
>>> 100
t1 = MyObject()
print(t1.x)
>>> 1
t2 = MyObject()
print(t2.x)
>>> 1
MyObject.x = 1000
print(t1.x)
>>> 1000
print(t2.x)
>>> 1000
t1.x = 2000
print(t2.x)
>>>1000
print(t1.x)
>>>2000
print(MyObject.x)
>>>1000
t2 = MyObject()
t1 = MyObject() print(MyObject.x is t1.x)
>>>True
print(MyObject.x is t2.x)
>>>True
print(t2.x is t1.x)
>>>True
---------------------------------------
t2 = MyObject()
t1 = MyObject() t2.x = 10
print(MyObject.x is t1.x)
>>>True
print(MyObject.x is t2.x)
>>>False
print(t2.x is t1.x)
>>>False
--------------------------------------
t2 = MyObject()
t1 = MyObject() MyObject.x = 100
t2.x = 10
print(MyObject.x is t1.x)
>>>True
print(MyObject.x is t2.x)
>>>False
print(t2.x is t1.x)
>>>False
构造函数中定义了类的成员变量,类的成员变量一定是在构造函数中以self.开头的变量!
成员函数中可以调用成员变量和类变量!成员函数的形参在类的实例调用该函数时传递,成员函数的局部变量在该成员函数内部定义。调用成员函数和调用普通函数一样,只是成员函数由该函数对应的类调用,即需要写成xxxx.func()而不是直接使用func()!
python类变量与构造函数的使用的更多相关文章
- python 类变量 在多线程下的共享与释放问题
最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...
- Python 类变量和成员变量
Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...
- Python中的构造函数
Python中的构造函数是__init__函数.在Python中,子类如果定义了构造函数,而没有调用父类的,那么Python不会自动调用,也就是说父类的构造函数不会执行. 比如有test.py的mod ...
- 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中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...
- Python类变量,实例变量,类方法,实例方法,静态方法的分析
Python作为动态语言,跟静态语言如c/c++有很大区别,其中的一个重要的特性就是Python的变量无需声明直接可用.同样,类的成员变量无需声明,直接可用.目的是为了动态语言跟灵活,在思路想到的时候 ...
随机推荐
- 爬虫笔记(二)——浏览器的模拟(Headers属性)
有的时候,我们无法爬取一些网页,会出现403错误,因为这些网页为了防止别人恶意采集其信息所以进行了一些反爬虫的设置.那么如果我们向爬取这些网页的信息,应该怎么办呢? 可以设置一些Headers信息,模 ...
- python_8_集合
1.集合:可变集合set,不可变集合frozenset,集合是无序不重复的 set('hello') set9[1,2,3,4]) set((1,2,3)) 2.添加元素 > add:将元素整体 ...
- EMD——EEMD——CEEMD语音增强算法基础
首先,HHT中用到的EMD详细介绍:https://wenku.baidu.com/view/3bba7029b4daa58da0114a9a.html 本文具体参考 https://zhuanlan ...
- RDD(三)——transformation_value类型
map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成.有多少个元素,func就被执行多少次. mapPartitions(func) 类似于map,但是,map函 ...
- java word另存为word xml格式
1.jacob-1.15-M3-x86.dll copy到c:\\windows\system32 2.引入jacob.jar 把jacob.dll(不同版本的jacob的dll文件名有所不同)复制到 ...
- linux 新添加的硬盘格式化并挂载到目录下方法
需求: 新增加一块硬盘sdb,将sdb分区,只分一个区,格式化,挂载到目录/ssd下.原文:https://www.cnblogs.com/ddbear/p/7009736.html 1. 查看现在 ...
- django-crontab使用
用 django-crontab 为 Django 添加定时任务 需求 做后台开发的时候,有时候会遇到这样的需求,在某个固定时间或者一定时间间隔自动触发某一事件.比如说我有一个需求要求是,周一到周五早 ...
- QuickSort(快速排序)原理及C++代码实现
快速排序可以说是最重要的排序,其中延伸的思想和技巧非常值得我们学习. 快速排序也使用了分治的思想,原理如下: 分解:数组A[p..r]被划分为两个(可能为空)子数组A[p..q-1]和A[q+1..r ...
- 计算机BIOS的简单设置(要安装Linux需关闭Security Boot选项)
计算机BIOS的简单设置(要安装Linux需关闭Security Boot选项) 发布时间:2016-12-07 22:46:19来源:linux网站作者:乐百川 BIOS是什么 BIOS全称是基本输 ...
- Java反射的应用 --- 内省
一.基础概念 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法.Java JDK中提供了一套 API 用来访问某个属性的 getter/sette ...