python类的本质和跨文件全局变量(秒杀单例模式)
原理部分
Class definitions, like function definitions (def
statements)
类的定义一般是statement (def
statements)的罗列集合
class ClassName:<statement-1>...<statement-N>
When a class definition is entered, a new namespace is created, and used as the local scope
当脚本执行到类的定义的时候,会为它创建一个命名空间,里面的scope为local scope,并创建一个 class object
当一个class object被创建的时候,它仅仅是一个包裹着类命名空间内容的wrapper
类对象支持两种操作:属性引用和实例化。
例如:
class MyClass:"""A simple example class"""i = 12345def __init__(self): self.data = []def f(self):return 'hello world'
MyClass.i
and MyClass.f都是合法的属性引用方式,
一般来说,类变量适用于类的所有实例,是它们共享的属性和方法(后面的伪单例模式就算用到这个特性)
实例化则是x = MyClass(),实例化的操作是先创建一个空的object,然后匹配执行__init__,来初始化其状态
>>> class Complex: ... def __init__(self, realpart, imagpart): ... self.r = realpart ... self.i = imagpart ... >>> x = Complex(3.0, -4.5) >>> x.r, x.i (3.0, -4.5)
注意这里面的self代表该类实例对象
实战部分
建立一个存储全局变量的类文件
my_global.py
class Global(object):count = 0def get_count(self):return Global.countdef set_count(self, num):Global.count = num
建两个文件fooo.py 和 test.py,进行跨文件检测
fooo.py 负责new 一个Global实例,并打印里面的全局变量
import my_globaldef print_foo_var():g = my_global.Global()print(g.get_count())
test.py负责new 一个Global实例,并修改里面的全局变量
再调用fooo.py里面的打印里面的全局变量的方法看看,全局变量变化
import my_global
g1 = my_global.Global()
g1.set_count(100)
g2 = my_global.Global()
print(g2.get_count())
import fooo
fooo.print_foo_var()
执行结果:(一致,跨文件成功!)
100
100
Process finished with exit code 0
原理:
Use a module. It is imported only once. Define some global variables in it - they will be singleton's 'attributes'. Add some functions - the singleton's 'methods'.
参考链接:https://stackoverflow.com/questions/6760685/creating-a-singleton-in-python
python类的本质和跨文件全局变量(秒杀单例模式)相关推荐
- python跨文件全局变量_Python跨文件全局变量的实现方法示例
前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明, ...
- Python跨文件全局变量的方法
Python实现跨文件跨线程全局变量的方法 参考:https://www.cnblogs.com/rnckty/p/7722603.html 跨文件全局变量不能跨进程,进程之间是隔绝的,必须用进程间通 ...
- Python跨文件全局变量的使用技巧
特别鸣谢以下更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn ...
- python跨文件全局变量_Python跨文件全局变量的使用
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...
- Python跨文件全局变量
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...
- python2.7 跨文件全局变量的方法
在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况. 文件1:globalvar.py #!/usr/bin/env python2.7 class GlobalVa ...
- Python实现跨文件全局变量的方法
Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件 再次使用 global x 也是无法访问到的,因为在这个py模 ...
- python跨文件全局变量_Python 进程之间共享数据(全局变量)的方法
进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...
- python类的应用_python中文件类的应用
python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt") 创建空文件 2) open("tes ...
- 【Python】python-pptx不支持跨文件复制
原作者scanny在本项目的Issues提到: python-pptx does not support cross-presentation operations like copying a sl ...
最新文章
- 读javascript高级程序设计06-面向对象之继承
- 机器学习算法:补一个k-近邻算法的测试
- linux怎么运行ofstream,ofstream和ifstream详细用法---转
- Dropout的前世与今生
- 解决linux下source /etc/profile关闭终端失效问题
- [RK3399 Android7.1] 开启保存上一次重启前日志
- 【转载保存】lucene优秀文章整理
- leetcode - 221. 最大正方形
- openssl生成私钥公钥的步骤
- A little knowledge point every day,一起学python
- 计算机视觉算法 面试必备知识点(2022)
- 2021年最新AZ自动发卡网源码-全网首发
- VBA实现 Excel自动填充
- Excel2019选择数据后,指定数据作为x轴
- SQL 给时间字段增加一固定时间
- Quora如何在快速开发中保持高品质代码
- 均值-方差模型实现及应用_python_数据分析_9
- 2021第三届长安杯
- 谷歌、华为、腾讯等纷纷布局,代表未来游戏方向的云游戏抢滩登陆
- 8750H带的动MATLAB2019吗,比7820HK略弱 8代酷睿i7-8750H处理器对比7代跑分测试
热门文章
- 自动装配的几种方式——Spring IOC/DI(四)
- [C#] 控制系统音量-第一章
- webpack配置时:Plugin/Preset files are not allowed to export objects, only functions.
- Gulp学习笔记(黑马教程)
- 数据抽取oracle_【跟我学】特征抽取算法与应用
- matlab中unique的作用,matlab中的unique函数详解
- mysql 全文所有_MySQL中的全文搜索
- 单体 soa 微服务 区别_程序员必须要知道的SOA和微服务的区别
- 基于adaboost算法的人脸检测_基于噪声检测的图像去噪算法
- oracle临时表空间占用率过高,ORACLE临时表空间太大,如何处理?