python在类中定义全局变量_python程序中用类变量代替global 定义全局变量
在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题。
比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码
#-*-coding: utf-8 -*-#from data_def import *
distance=34
classtest(object):def __init__(self):pass
#在类里面改变全局变量的值
defchange_1(self):globaldistance
distance=90
print("distance in class:", distance)#输出全局变量的值
defprint_value(self):globaldistanceprint("distance in class:", distance)#在函数里面使用和打印全局变量的值
deffunction_test():globaldistanceprint("global value in function", distance)
distance=234
print("global value in function",distance)
function_test()#在函数里面使用和改变全局变量的值 34->234
t=test()
t.print_value()#在类里面打印全局变量的值 234
t.change_1() #在类里面改变全局变量的值 234->90
程序运行结果如下:全局变量运行正确
global value in function 34
global value in function 234distance in class: 234distancein class: 90
下面把上述代码拆分成两个文件,data_def.py 和 main.py ,data_def.py 定义全局变量distance 和类 ,main.py 导入data_def.py。
data_def.py文件代码如下:
#-*-coding: utf-8 -*-
distance=34
classtest(object):def __init__(self):pass
#在类里面改变全局变量的值
defchange_1(self):globaldistance
distance=90
print("distance in class:", distance)#输出全局变量的值
defprint_value(self):globaldistanceprint("distance in class:", distance)
main.py文件代码如下:
#-*-coding: utf-8 -*-
from data_def import *
#在函数里面使用和打印全局变量的值
deffunction_test():globaldistanceprint("global value in function", distance)
distance=234
print("global value in function",distance)print("gloabl value in main:",distance) #主函数里面,全局变量为34
function_test() #在函数里面使用和改变全局变量的值 34->234
t=test()
t.print_value()#在类里面打印全局变量的值 输出为 34 并非是234,函数里面改变全局变量值不影响类里面全局变量的值???
t.change_1() #在类里面改变全局变量的值 34->90
程序运行结果:
gloabl value in main: 34
global value in function 34
global value in function 234distancein class: 34distancein class: 90
两次运行的结果存在出入,可以发现,用global 在不同文件间操作全局变量时,生成的结果和我们想象的不太一样,具体原因还不明确??知道原因的欢迎留言。
为此,可以考虑用类变量来定义全局变量。实现方式看以下代码。
第一个文件(data_def.py)定义两个类,第一个类定义全局变量distance ,第二个类为普通操作类
#-*-coding: utf-8 -*-#filename:data_def.py#构造类变量作为全局变量,代替global
classglobal_value():
distance=34
classtest(object):def __init__(self):pass
#在类里面改变全局变量的值
defchange_1(self):
global_value.distance=40
print("distance in class:", global_value.distance)defchange_2(self):
global_value.tail_dis=90
print("distance in class:",global_value.distance)#输出全局变量的值
defprint_value(self):print("distance in class:", global_value.distance)
第二个文件(main.py) 导入第一个文件定义的类,并进行变量操作
#-*-coding: utf-8 -*-
from data_def import *
#在函数里面使用和打印全局变量的值
deffunction_test():print("global value in function", global_value.distance)
global_value.distance=234
print("global value in function",global_value.distance)print("global value in main:",global_value.distance) #打印出全局变量的初始值:34
t=test()
t.change_1()#在类里面改变全局变量的值:34->40
print("global value in main:",global_value.distance)
t.change_2()#在类里面改变全局变量的值:40->90
print("global value in main:",global_value.distance)
function_test()#在自定义函数里面使用和改变全局变量的值 90->234
global_value.distance=11 #在main主函数里面改变全局变量的值 234->11
t.print_value() #在类里面查看已经改变的全局变量的值 11
程序输出结果如下:
程序执行输出结果:global value in main: 34distancein class: 40
global value in main: 40distancein class: 40
global value in main: 40
global value in function 40
global value in function 234distancein class: 11
从输出结果可以看出,利用类变量的方式也可以实现全局变量的定义,并且可以跨文件操作。
python在类中定义全局变量_python程序中用类变量代替global 定义全局变量相关推荐
- python 全局变量_python程序中用类变量代替global 定义全局变量
在python编程中,一般使用global 关键字来定义全局变量,但是发现 global 关键字在涉及多个文件时,好像存在问题. 比如,单个文件下用global定义使用全局变量的情况 ,看下面的代码 ...
- python的类中包含什么_Python中的类(中)
上一篇介绍了Python中类相关的一些基本点,本文看看Python中类的继承和__slots__属性. 继承 在Python中,同时支持单继承与多继承,一般语法如下: classSubClassNam ...
- python在wps中的应用_python程序的一个应用wps的实例
最近看到一个同事在统计一个月的数据量时,看到她是一个wps文件打开来记下几个特定的数,然后是当月的每天的一个文件看过来,然后算出总和,我看她一个个文件打开来很麻烦,最近刚好在看python,想了下不知 ...
- Python 同一个类中不同函数相互调用
本文采取:Python的类中函数方法相互调用的两种方式_狗哥的博客-CSDN博客 __metaclass__=type class Stu:name=Noneage=Noneschool=" ...
- Python 自定义类中NameError错误的解决
Python 自定义类中NameError错误的解决 自定义类之后,python中常常有莫名其妙的NameError提示出错.经尝试后发现,在修改类代码并保存之后,光重新import类是不够的,需要重 ...
- python类中调用另一个程序函数_Python:如何在另一个类中调用函数
我被一些python脚本困住了 https://python4kids.brendanscott.com/2014/12/02/hooking-up-the-sunfish-chess-engine- ...
- 【PYTHON】论Python的类中的私有变量、共有变量、全局变量、局部变量
0 引言 Python语言中,一切皆对象.对于Python语言中的变量,我想大家都不陌生,但是在Python中,变量也有很多种类.如私有变量.共有变量.全局变量.局部变量等.这里给大家介绍Python ...
- python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法
学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...
- python类中变量作用域_python进阶14变量作用域LEGB
作用域 "作用域"定义了Python在哪一个层次上查找某个"变量名"对应的对象.接下来的问题就是:"Python在查找'名称-对象'映射时,是按照什么 ...
最新文章
- SpringMVC学习03之使用注解开发SpringMVC
- 二级联动菜单(javascript)
- php 复制文件夹并压缩到最小_PHP压缩文件夹的方法
- 原来还有这样一个东西,重来不知道过-linux ,ulimit
- 自己写的简易多任务系统---基于pic18fxxx
- Javascript IE 内存释放
- JACK——BOM Exercise2
- awk -f 分隔符 命令_Linux awk命令详解(详解版)
- Windows 禁止mysql 自动更新
- 15个实用的管理mysql的MySQLadmin命令
- android开发框架_2019 年五大跨平台移动应用开发工具
- MCPC 2011Hdu4207-4214(未完全)题解
- java 睡眠_Java 线程和多线程执行过程分析
- MySQL回滚日志(undo log)总结
- 备忘--moodle安装
- 电大系统服务器的性能测试报告表,湖南电大校教职工绩效管理系统的设计与实现...
- java即时通讯聊天工具
- 中国网络游戏行业发展模式创新与投资前景调研报告2021-2027年
- songtest 歌曲下载 器
- 怎么正确理解股票量化的概念?