python中类的嵌套_python中的嵌套类 | 学步园
在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下。动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学习。
#!/usr/bin/env python
import threading, sys
def nested1(timeout):
def _1(function):
def _2(*args,**kw):
class child(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.result=None
self.error = None
self.setDaemon(True)
self.start()
def run(self):
try:
self.result = function(*args, **kw)
except:
self.error = sys.exc_info()
c = child()
c.join(timeout)
if c.isAlive():
raise TimeoutError, 'took too long'
if c.error:
raise c.error[0], c.error[1]
return c.result
return _2
return _1
def test(a, b):
for i in xrange(100000):
a = a+b
return a
if __name__ == '__main__':
nested1 = nested1(2)
nested2 = nested1(test)
print nested2(2,3)
a = nested2.child()
print a
上面是一个借鉴web.py框架中的一个例子,下面print a部分是我的测试,发现函数对象不能引用内层的类,这里的实现可以发现比独立写多个函数和类减少很多代码
再看个例子:
#!/usr/bin/env python
import os, sys
class parent:
def __init__(self):
self.name = 'parent'
def getName(self):
print self.name
class child:
def __init__(self):
self.name = 'child'
def getName(self):
print self.name
if __name__ == '__main__':
child = parent.child()
child.getName()
这里从父类引用内部类,后面部分还可以这样
if __name__ == '__main__':
p = parent()
p.getName()
c = p.child()
c.getName()
python中类的嵌套_python中的嵌套类 | 学步园相关推荐
- python中类怎么理解_Python中的列表理解
python中类怎么理解 In order to create a list, a most obvious and remembered solution is to use a for-loop. ...
- python写一个类方法_python中如何写类
类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...
- python中类的嵌套_python 中的嵌套类
嵌套类的简单介绍 在看 idarling 源码中,经常出现如下代码: import sys import ida_funcs import ida_kernwin from PyQt5.QtCore ...
- python中类的用法_Python中的类和方法使用举例
成员变量 对象的创建 创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法, 句柄用于区分不同的对象, 对象的属性和方法,与类中的成员变量和成员函数对应, obj = ...
- python中类的构成_Python中类型关系和继承关系实例详解
本文详细介绍了Python中类型关系和继承关系.分享给大家供大家参考.具体分析如下: 如果一个对象A持有另一个对象B的ID,那么检索到A之后就可以检索到B,我们就说存在一个A到B的导航.这种导航关系使 ...
- python中类的使用_Python第九课-使用 类(class)创造新的数据类型!
前言 之前几课里边我们接触到了很多内置数据类型,字符串.列表.字典等等. 难道一个编程语言里只能使用定义好的数据类型吗?如果他们并不非常适合现有数据的表达呢?我们可以创造一个新的数据类型来使用吗? 当 ...
- python压缩文件操作_python处理zip压缩文件 | 学步园
从简单的角度来看的话,zip格式会是个不错的选择,而且python对zip格式的支持够简单,够好用. 1)简单应用 如果你仅仅是希望用python来做压缩和解压缩,那么就不用去翻文档了,这里提供一个简 ...
- java secretkey_Java中的SecretKeyFactory类 | 学步园
SecretKeyFactory表示秘密密钥的工厂.类声明:public class SecretKeyFactoryextends Object 密钥工厂用来将密钥(类型 Key 的不透明加密密钥) ...
- python算法和数据结构_Python中的数据结构和算法
python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...
最新文章
- java web定义数组_Java基础之数组--数组常用操作
- git log 迁移_现场故事:从Log4J迁移到Log4J2
- java使用内部类的好处及其初始化
- 一个U盘走天下,装机大神撩妹的不二之选
- 让div垂直居中的5种方法
- 正交法设计测试用例时可以使用的工具allpairs---生成正交表
- Nexus5 破解电信关键步骤
- 微型计算机原理与接口技术知识点
- windows无法格式化u盘_U盘无法打开提示格式化?4种方法快速拯救它
- 奥多朗WIFI 插座
- h5混合开发框架初识
- excel查标准正态分布_Excel有关正态分布函数NORMSDIST做正态分布图
- 解析局域网即时通讯软件安全吗
- 为视频增加中文字幕---Amazon Transcribe
- 二十九岁,刚读完了财富启蒙读物《小狗钱钱》
- python数字求和菜鸟教程_Python Number(数字) | 菜鸟教程
- Arcgis填补栅格空缺值Nodata
- OLTP与OLAP理解
- rdlc报表An error occurred during local report processing错误
- android程序字体大小,Android 动态调整应用字体大小