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批量自动填写网页表单_Pyt
- 下一篇: python 少儿趣味编程下载_趣味儿童