一、全局变量

实现全局变量主要有两种方法:声明法和模块法

1、声明法

在文件开头声明全局变量variable,在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。

2、模块法(本文主要使用模块法)

把全局变量定义在一个单独的模块中,适用于不同文件之间的变量共享,而且一定程度上避免了全局变量的弊端。

二、类方法和静态方法

python没有和C++中static关键字,它的静态方法是怎样的?还有其它语言中少有的类方法又是怎么回事?
python中实现静态方法和类方法都是依赖于python的修饰器来实现的。

普通的对象方法、类方法和静态方法的区别如何?
对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数。

三、代码

文件一:globalData.py

#! /usr/bin/env python
#coding=utf-8#1、把全局变量定义在一个单独的模块中:glo_resource = []#2、类方法的使用
class Common(object):a1=[]@classmethoddef addData(cls,a2):cls.a1.append(a2)@classmethoddef showData(cls):return cls.a1

文件二:test.py

#! /usr/bin/env python
#coding=utf-8
from globalData import * class MergeHost(object):def __init__(self, resource_list):self.resource_list = resource_listdef merge_host(self):allResource=[]allResource.append(self.resource_list[0])for dict in self.resource_list:#print len(l4)k=0for item in allResource:#print 'item'if dict['host'] != item['host']:k=k+1#continueelse:breakif k == len(allResource):allResource.append(dict)taskhost=[]for item in allResource:taskhost.append(item['host'])print '########previous########'print glo_resourceprint '########previous########'#1、全局变量赋值glo_resource.append(taskhost)#2、类方法和类中数据成员的使用Common.addData(taskhost)print "Common list: ",Common.a1print "Common list: ",Common.showData()return taskhostclass MyClass(): def method(self): print("method") @staticmethod def staticMethod(): print("static method") @classmethod def classMethod(cls): print("class method")class A(object):"This ia A Class"@staticmethoddef Foo1():print("Call static method foo1()\n")@classmethoddef Foo2(cls):print("Call class method foo2()")print("cls.__name__ is ",cls.__name__)if __name__ == '__main__':resource_list=[{'host':'compute21', 'cpu':2},{'host':'compute21', 'cpu':2},{'host':'compute22', 'cpu':2},{'host':'compute23', 'cpu':2},{'host':'compute22', 'cpu':2},{'host':'compute23', 'cpu':2},{'host':'compute24', 'cpu':2}]hostSchedule = MergeHost(resource_list)taskhost = hostSchedule.merge_host()print 'glo_resource: ', glo_resource#print 'taskhost: '#print taskhostm = MyClass()m.classMethod()m.method()m.staticMethod()A.Foo1();A.Foo2();

运行test.py得到结果:

########previous########
[]
########previous########
Common list:  [['compute21', 'compute22', 'compute23', 'compute24']]
Common list:  [['compute21', 'compute22', 'compute23', 'compute24']]
glo_resource:  [['compute21', 'compute22', 'compute23', 'compute24']]
class method
method
static method
Call static method foo1()Call class method foo2()
('cls.__name__ is ', 'A')

Python类方法、静态方法、全局变量的使用相关推荐

  1. python static方法_浅谈python 类方法/静态方法

    1.类方法 类方法是从属于"类对象"的方法.类对象可以通过装饰器@classmethod来定义,具体格式如下: @classmethod def 类方法名(cls [, 形参列表] ...

  2. python 类方法 静态方法_python中类方法、类实例方法、静态方法的使用与区别

    注:使用的是Python2.7. 一.实例方法 实例方法就是类的实例能够使用的方法.如下: class Foo: def __init__(self, name): self.name = name ...

  3. python 类方法 静态方法_Python静态方法和类方法

    方法就是一个函数,它作为一个类属性而存在,可以使用如下方式进行声明.访问一个函数: class Student(object): def __init__(self,sex): self.sex = ...

  4. 软件测试学习 之 Python 类属性 实例属性、实例方法 类方法 静态方法

    本篇的主要内容是自己的手动操作的学习记录,关于个名词的理论概念参见以下文章: Python 实例方法.类方法.静态方法的区别与作用 作者:蔷薇Nina 出处:博客园 python3类对象.实例对象.类 ...

  5. python展开面_python面度对象(属性,类方法,静态方法)

    一. 属性 所谓的属性,就是将一个类中的方法伪装成一个属性.在代码的级别是没有任何本质上的提升.但是让代码看起来更顺眼. property 装饰器函数,内置函数,帮助你将类中的方法伪装成属性(特性). ...

  6. python 打印对象的全部属性_详解:Python 面向对象静态方法、类方法、属性方法知识点小结...

    今天为大家带来的内容是介绍了Python 面向对象静态方法.类方法.属性方法,总结分析了Python 面向对象程序设计中静态方法.类方法.属性方法相关概念.知识点.操作技巧与使用注意事项,需要的朋友可 ...

  7. Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法

    内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...

  8. Python 面向对象 —— 静态方法和类方法

    实例方法 静态方法 类方法 静态方法 @staticmethod def foo(): ... 静态方法实际上就是普通函数,只是由于某种原因(信息局部化)需要定义在类内部.静态方法没有 self 参数 ...

  9. python类方法的作用-python:类方法的目的是什么?

    我正在自学Python,而我最近的经验是Python不是Java,所以我花了一些时间将所有的类方法转换成函数. 我现在意识到,我不需要使用类方法来完成我在Java中使用static方法所做的工作,但是 ...

  10. python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用

    python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用(3-20181205) 文章目录: 一. @staticmetho ...

最新文章

  1. 【Java 虚拟机探索之路系列】:JIT编译器
  2. selenium webdriver 如何添加cookie
  3. spark常用RDD算子 汇总(java和scala版本)
  4. C# 能否获取一个对象所占内存的大小?
  5. 从“void*”到指向非“void”的指针的转换要求显式类型转换错误
  6. 苹果CMS10 资源网模板
  7. cesium 雷达扫描(附源码下载)
  8. 职业教育计算机课教学反思,职高课后的教学反思(精选5篇)
  9. 20.校准相机——直接线性校准不均匀,直接线性校准变换,几何误差_3
  10. android 蓝牙与单片机通信原理图,手机蓝牙与HC-06蓝牙模块控制单片机程序加APP...
  11. discuz上传附件失败问题解决办法
  12. sqlplus 乱码的资料
  13. 班长团支书福音——爬虫+腾讯云短信平台实现自动提醒同学体温上报 【附源码】
  14. 人工智能导论 王万良教授_人工智能导论 全套课件.ppt
  15. Tungsten Fabric如何增强Kubernetes的网络性能
  16. 关于Oppen Live Writer中插入可折叠着色代码的插件
  17. ffmpeg 自定义IO与Seek
  18. idea报错 No valid Maven installation found.maven不能用
  19. 仿蜻蜓FM专辑页面滑动特效
  20. oracle执行存储过程参数,Oracle定时任务执行存储过程带参数

热门文章

  1. html div背景自动居中显示,网站背景图居中自适应以及拉伸填充CSS代码解决方法...
  2. 联想主板9针开关接线图_针式打印机不开机的故障维修
  3. 打造“拉动式”企业培训管理方案,释放人才潜能
  4. 超级计算机与生命科学,为什么人类可以造出超级计算机,却连最简单的细胞都造不出来?...
  5. html+css网站设计,比较简单,附代码
  6. 腾讯、阿里的城市大脑较量
  7. DHCP抓包-Wireshark分析
  8. 更改Ubuntu 的登录背景图片
  9. VNPY - CTA策略模块策略开发
  10. 算法笔记(15)特征提取及Python代码实现