在过去的两天里,我一直在探索decorator以及如何使用它们来创建和修改类而不费吹灰之力。这个探索引出了这段代码。在
在工厂.py在#!/usr/bin/env python
import sys
import functools
class Factory(object):
def with_callback(self, func):
postname = func.func_name
def wraped(callback, *args, **kw):
cbname = callback.func_name
print 'Passing {post} to {cb}'.format(post=postname, cb=cbname)
premute = func(*args, **kw)
return callback(premute)
return wraped
def __str__(self):
return str(self.__dict__)
def register(self, name):
def func_wrapper(func):
self.__dict__[name] = func
return func
return func_wrapper
def __getitem__(self, name):
return self.__dict__.get(name, None)
def __setitem__(self, name):
self.register(name)
def __call__(self, name=None, *args, **kw):
return self.__dict__.get(name, None)(*args, **kw)
def copy(self, old):
class DerivedFactory(self.__class__):
def __init__(self):
self.__dict__ = old.__dict__
self.__class__ = old.__class__
return DerivedFactory()
if __name__ == '__main__':
import requests
app = Factory()
@app.register('process_response')
def process_response(response):
print response.content
@app.register('get')
@app.with_callback
def get(url):
return requests.get(url)
x = app('get', app.process_response, 'http://www.google.com')
print x
下面是工厂.py
^{pr2}$
主要有六种编程模式:命令
陈述性的
功能性
面向对象的
逻辑
象征性的
这些范例中哪一个最能描述工厂.py? 在