电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python類共享變量操作

瀏覽:4日期:2022-07-12 13:11:34

我們以一個例子展開這個題目

問題:

python類對象A,先實例化一個A對象的實例b,接著給A對象添加一個類共享變量xxx,再實例化一個c,請問b 和c都有變量xxx嗎

解答:

python類共享變量,是不需要實例化就可以調用的, 比如類A有一個XXX的類共享變量, 直接A.xxx就可以調用

第一步:b在實例化的時候類A中沒有共享變量xxx,這個時候實例b是沒有這個變量

第二步:給類A 添加一個類共享變量XXX, 添加完成后,會自動給類A 已生成的實例添加變量XXX ,所以b實例在A添加共享變量XXX后,也會有變量XXX

第三步:最后實例化c的時候類A本來已經有類共享變量xxx,所以c實例也會有變量xxx

結論:實例b c都會有變量xxx

寫段代碼驗證下

#coding=utf-8class A(): passb = A()print(dir(b),'b實例 ,共享變量添加前')A.xxx=10c = A()print(dir(b),'b實例 ,共享變量添加后')print(dir(c),'b實例 ')

代碼執行結果

python類共享變量操作

根據結果看, 可以看出添加類共享變量xxx之后 ,b c 實例都有變量xxx

補充知識:PYTHON多模塊文件共享變量

首先,有5個Python文件,共享變量x存在glovar.py里面,需要在任意模塊都能更改,更改后任意模塊獲取到的值都相同,這就是多模塊文件共享一個變量。

#5個文件的路徑c:testmain.pyc:testshow.pyc:testtest.pyc:testcommon__init__.py #空文件c:testcommonglovar.pyc:testcommoncalc.py

#glovar.py

x = 1

#show.pyfrom comon import glovarclass Show: def showchange(self): if glovar.x!=1: print ’show x change’ else: print ’show x=1’

#test.pyfrom comon.glovar import xclass Test: def testchange(self): if x!=1: print ’test x change’ else: print ’test x=1’

#calc.pyimport glovarclass Calc: def add(self): glovar.x+=1

#main.pyfrom comon import glovar c = Calc()c.add() s = Show()s.showchange() t = Test()t.testchange()

運行main.py

#輸出show x changetest x=1

上面這些文件,除了test.py失敗,其他文件都能共享變量能成功,是因為python的命名空間相同,靠的就是import用正確

來看看這三種不同

import glovarfrom comon import glovarfrom common.glovar import x

Python import 包的機制是,import進來的和默認的系統的module了,都放在sys.module這個字典里面. 多個py文件再次import的時候,會先去sys.module里面檢查是否已經import了,如果已經import了,就不再重復import,否則就import進來

===

import glovar和from comon import glovar的命名空間是一樣的,key都是glovar

from common.glovar import x 則不一樣,test.py中這樣from import,就相當于在test.py文件中寫了一行代碼x = 1,

此時x就是test自己命名空間中的變量。所以x只在test.py中有效,無聊自己如何對x修改,都無法影響glovar 中的x

#換種說法from glovar import x#等同于improt glovarx= glovar.x#你調用x的時候,就是自己的命名空間中的x#當你執行x=2時,完全影響不到glovar.x

下面是解釋

#引入當前glovar文件,此時namespace是glovarimport glovar #從common目錄中引入glovar,此時namespace是glovarfrom comon import glovar #從common目錄中的glovar文件中引入x=1,此時namespace就是引用者,也就是上面的test.pyfrom common.glovar import x

所以,如果需要共享變量,就不要使用from file import x這種形式,而是使用import file,然后就可以通過file.x來使用,然后file.x=’abc’可以進行修改。這樣都這樣處理全局性的變量就可以共享的。也就是保持一個獨立的namespace,這樣python不會再次導入,從而實現共享。

以上這篇python類共享變量操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 家乐事净水器官网-净水器厂家「官方」 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 云南成人高考_云南成考网| 写方案网_方案策划方案模板下载| 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 5L旋转蒸发器-20L-50L旋转蒸发器-上海越众仪器设备有限公司 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 耐高温电缆厂家-远洋高温电缆| 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 上海阳光泵业制造有限公司 -【官方网站】 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 北京租车牌|京牌指标租赁|小客车指标出租| 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 模具钢_高速钢_不锈钢-万利钢金属材料 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | RS系列电阻器,RK_RJ启动调整电阻器,RQ_RZ电阻器-上海永上电器有限公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 |