Todo: 集成多平台 解决因SaiNiu线程抢占资源问题 本地提交测试环境打包 和 正式打包脚本与正式环境打包bat 提交Python32环境包 改进多日志文件生成情况修改打包日志细节
This commit is contained in:
34
Utils/PythonNew32/Lib/idlelib/delegator.py
Normal file
34
Utils/PythonNew32/Lib/idlelib/delegator.py
Normal file
@@ -0,0 +1,34 @@
|
||||
class Delegator:
|
||||
|
||||
def __init__(self, delegate=None):
|
||||
self.delegate = delegate
|
||||
self.__cache = set()
|
||||
# Cache is used to only remove added attributes
|
||||
# when changing the delegate.
|
||||
|
||||
def __getattr__(self, name):
|
||||
attr = getattr(self.delegate, name) # May raise AttributeError
|
||||
setattr(self, name, attr)
|
||||
self.__cache.add(name)
|
||||
return attr
|
||||
|
||||
def resetcache(self):
|
||||
"Removes added attributes while leaving original attributes."
|
||||
# Function is really about resetting delegator dict
|
||||
# to original state. Cache is just a means
|
||||
for key in self.__cache:
|
||||
try:
|
||||
delattr(self, key)
|
||||
except AttributeError:
|
||||
pass
|
||||
self.__cache.clear()
|
||||
|
||||
def setdelegate(self, delegate):
|
||||
"Reset attributes and change delegate."
|
||||
self.resetcache()
|
||||
self.delegate = delegate
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from unittest import main
|
||||
main('idlelib.idle_test.test_delegator', verbosity=2)
|
||||
Reference in New Issue
Block a user