原理部分

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类的本质和跨文件全局变量(秒杀单例模式)相关推荐

  1. python跨文件全局变量_Python跨文件全局变量的实现方法示例

    前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明, ...

  2. Python跨文件全局变量的方法

    Python实现跨文件跨线程全局变量的方法 参考:https://www.cnblogs.com/rnckty/p/7722603.html 跨文件全局变量不能跨进程,进程之间是隔绝的,必须用进程间通 ...

  3. Python跨文件全局变量的使用技巧

    特别鸣谢以下更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn ...

  4. python跨文件全局变量_Python跨文件全局变量的使用

    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...

  5. Python跨文件全局变量

    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...

  6. python2.7 跨文件全局变量的方法

    在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况. 文件1:globalvar.py #!/usr/bin/env python2.7 class GlobalVa ...

  7. Python实现跨文件全局变量的方法

    Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件 再次使用 global x 也是无法访问到的,因为在这个py模 ...

  8. python跨文件全局变量_Python 进程之间共享数据(全局变量)的方法

    进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...

  9. python类的应用_python中文件类的应用

    python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt") 创建空文件 2) open("tes ...

  10. 【Python】python-pptx不支持跨文件复制

    原作者scanny在本项目的Issues提到: python-pptx does not support cross-presentation operations like copying a sl ...

最新文章

  1. 读javascript高级程序设计06-面向对象之继承
  2. 机器学习算法:补一个k-近邻算法的测试
  3. linux怎么运行ofstream,ofstream和ifstream详细用法---转
  4. Dropout的前世与今生
  5. 解决linux下source /etc/profile关闭终端失效问题
  6. [RK3399 Android7.1] 开启保存上一次重启前日志
  7. 【转载保存】lucene优秀文章整理
  8. leetcode - 221. 最大正方形
  9. openssl生成私钥公钥的步骤
  10. A little knowledge point every day,一起学python
  11. 计算机视觉算法 面试必备知识点(2022)
  12. 2021年最新AZ自动发卡网源码-全网首发
  13. VBA实现 Excel自动填充
  14. Excel2019选择数据后,指定数据作为x轴
  15. SQL 给时间字段增加一固定时间
  16. Quora如何在快速开发中保持高品质代码
  17. 均值-方差模型实现及应用_python_数据分析_9
  18. 2021第三届长安杯
  19. 谷歌、华为、腾讯等纷纷布局,代表未来游戏方向的云游戏抢滩登陆
  20. 8750H带的动MATLAB2019吗,比7820HK略弱 8代酷睿i7-8750H处理器对比7代跑分测试

热门文章

  1. 自动装配的几种方式——Spring IOC/DI(四)
  2. [C#] 控制系统音量-第一章
  3. webpack配置时:Plugin/Preset files are not allowed to export objects, only functions.
  4. Gulp学习笔记(黑马教程)
  5. 数据抽取oracle_【跟我学】特征抽取算法与应用
  6. matlab中unique的作用,matlab中的unique函数详解
  7. mysql 全文所有_MySQL中的全文搜索
  8. 单体 soa 微服务 区别_程序员必须要知道的SOA和微服务的区别
  9. 基于adaboost算法的人脸检测_基于噪声检测的图像去噪算法
  10. oracle临时表空间占用率过高,ORACLE临时表空间太大,如何处理?