1, 工厂模式
假设有一个功能, 能使用3种类(class1, class2, class3)实现, 用户使用的时候, 可以根据配置使用其中任何一种,
那么你可以使用工厂模式实现.
classx = get_factory(name):
if name == "class1": return class1
elif name == "class2": return class2
elif name == "class3": return class3
2,方法覆盖
class test():
def __init__(test):
self.test = test
def __get_attr__(self, attr):
retrun self.test.__get_attr__(attr)
class test1():
def display(self):
print "test1"
class test2():
def display(self):
print "test2"
ts = test(test1)
ts.display()
ts = test(test2)
ts.display()
3,装饰器@
可以在一些函数执行前后, 加一段固定的修饰代码, 如lock处理, 参数处理等
def deco(arg):
def _deco(func):
def __deco(*args, **kwargs):
print "arg", arg
ret = func(*args, **kwargs)
return ret
return __deco
return _deco
@deco("test")
def myfunc(*args, **kwargs):
print "arg:",args,kwargs
myfunc(1,2,3)
3, eval:
eval能把字符串变成本地的变量/函数/类, 使用如下:
import os
def do_cmd(func, *args)
eval(func)(*args)
do_cmd("os.listdir", "/")
4, traceback
import traceback
import logging
def test():
raise Exception({"ENO":123, "EMSG": "test error message"})
try:
test()
exception Exception, e:
logging.exception("%s", "test raise")
traceback.print_exc()
print e
阅读(1813) | 评论(0) | 转发(0) |