在.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中的嵌套类 | 学步园相关推荐

  1. python中类怎么理解_Python中的列表理解

    python中类怎么理解 In order to create a list, a most obvious and remembered solution is to use a for-loop. ...

  2. python写一个类方法_python中如何写类

    类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...

  3. python中类的嵌套_python 中的嵌套类

    嵌套类的简单介绍 在看 idarling 源码中,经常出现如下代码: import sys import ida_funcs import ida_kernwin from PyQt5.QtCore ...

  4. python中类的用法_Python中的类和方法使用举例

    成员变量 对象的创建 创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法, 句柄用于区分不同的对象, 对象的属性和方法,与类中的成员变量和成员函数对应, obj = ...

  5. python中类的构成_Python中类型关系和继承关系实例详解

    本文详细介绍了Python中类型关系和继承关系.分享给大家供大家参考.具体分析如下: 如果一个对象A持有另一个对象B的ID,那么检索到A之后就可以检索到B,我们就说存在一个A到B的导航.这种导航关系使 ...

  6. python中类的使用_Python第九课-使用 类(class)创造新的数据类型!

    前言 之前几课里边我们接触到了很多内置数据类型,字符串.列表.字典等等. 难道一个编程语言里只能使用定义好的数据类型吗?如果他们并不非常适合现有数据的表达呢?我们可以创造一个新的数据类型来使用吗? 当 ...

  7. python压缩文件操作_python处理zip压缩文件 | 学步园

    从简单的角度来看的话,zip格式会是个不错的选择,而且python对zip格式的支持够简单,够好用. 1)简单应用 如果你仅仅是希望用python来做压缩和解压缩,那么就不用去翻文档了,这里提供一个简 ...

  8. java secretkey_Java中的SecretKeyFactory类 | 学步园

    SecretKeyFactory表示秘密密钥的工厂.类声明:public class SecretKeyFactoryextends Object 密钥工厂用来将密钥(类型 Key 的不透明加密密钥) ...

  9. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

最新文章

  1. java web定义数组_Java基础之数组--数组常用操作
  2. git log 迁移_现场故事:从Log4J迁移到Log4J2
  3. java使用内部类的好处及其初始化
  4. 一个U盘走天下,装机大神撩妹的不二之选
  5. 让div垂直居中的5种方法
  6. 正交法设计测试用例时可以使用的工具allpairs---生成正交表
  7. Nexus5 破解电信关键步骤
  8. 微型计算机原理与接口技术知识点
  9. windows无法格式化u盘_U盘无法打开提示格式化?4种方法快速拯救它
  10. 奥多朗WIFI 插座
  11. h5混合开发框架初识
  12. excel查标准正态分布_Excel有关正态分布函数NORMSDIST做正态分布图
  13. 解析局域网即时通讯软件安全吗
  14. 为视频增加中文字幕---Amazon Transcribe
  15. 二十九岁,刚读完了财富启蒙读物《小狗钱钱》
  16. python数字求和菜鸟教程_Python Number(数字) | 菜鸟教程
  17. Arcgis填补栅格空缺值Nodata
  18. OLTP与OLAP理解
  19. rdlc报表An error occurred during local report processing错误
  20. android程序字体大小,Android 动态调整应用字体大小

热门文章

  1. 如何在ubuntu中安装mysql与mysql workbench
  2. 简谈WP,IOS,Android智能手机OS
  3. [Android]ListView控件之Adapter性能优化
  4. wxPython 笔记(3)基本结构
  5. 重磅!居全国前列!合肥获批建设3个国家战略性新兴产业集群!
  6. 机器学习实战:支持向量机
  7. 给嵌入式工程师的一封信
  8. Collection接口详解
  9. 工业计算机是服务器吗,工控机服务器能通用吗_服务器和工控机有什么区别
  10. node python 速度_为什么python在递归上比node.js慢得多