python类和函数中使用静态变量的方法


Posted in Python onMay 09, 2015

本文实例讲述了python类和函数中使用静态变量的方法。分享给大家供大家参考。具体分析如下:

在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事,
但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法

方法一、通过类的__init__和__call__方法

class foo:
  def __init__(self, n=0):
    self.n = n
  def __call__(self, i):
    self.n += i
    return self.n
a=foo()
print a(1)
print a(2)
print a(3)
print a(4)

方法二、在函数中定义一个类

def foo2 (n=0):
  class acc:
    def __init__ (self, s):
      self.s = s
    def inc (self, i):
      self.s += i
      return self.s
  return acc (n).inc
a=foo2()
print a(1)
print a(2)
print a(3)
print a(4)

方法三、使用堆上的匿名参数

def foo3 (i, L=[]):
  if len(L)==0:
    L.append(0)
  L[0]+=i
  return L[0]
 
print foo3(1)
print foo3(2)
print foo3(3)
print foo3(4)

在python官方的2.6环境下运行,
上述三段代码得到的结果都是

1 
3 
6 
10

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
python 自定义装饰器实例详解
Jul 20 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
基于python实现检索标记敏感词并输出
May 07 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python实用日期时间处理方法汇总
May 09 #Python
python fabric使用笔记
May 09 #Python
Python字符串详细介绍
May 09 #Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 #Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 #Python
Python MySQLdb Linux下安装笔记
May 09 #Python
python实现类的静态变量用法实例
May 08 #Python
You might like
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
模拟select的代码
2011/10/19 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
python实现12306火车票查询器
2017/04/20 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python iter()函数用法实例分析
2018/03/17 Python
python3 深浅copy对比详解
2019/08/12 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
5.1手机促销活动
2014/01/17 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技