看一个小demo
#coding=utf-8
class ImFunc(object):
def __call__(self,words):
print 'i say %s' % words
if __name__ == '__main__':
imfunc = ImFunc()
imfunc('what the func?') #把类当函数使
在Django中的template的loader.py中,就是使用了这个方法,部分代码:
class BaseLoader(object):
is_usable = False
def __init__(self, *args, **kwargs):
pass
def __call__(self, template_name, template_dirs=None):
return self.load_template(template_name, template_dirs)
def load_template(self, template_name, template_dirs=None):
source, display_name = self.load_template_source(template_name, template_dirs)
origin = make_origin(.......
看其作用应该就是省去了调用时写load_template这个方法了,另外一个作用就是如果BaseLoader内部的代码发生变化,外部的调用代码不需要改变。
还有其他用处吗? - from the5fire.com
----EOF-----
微信公众号:Python程序员杂谈
微信公众号:Python程序员杂谈