python 构建一个回调函数2

来源:互联网 发布:分期乐软件靠谱吗 编辑:程序博客网 时间:2024/06/16 10:50
class Test:def __init__(self):self.f_list = [] def register(self, function):if function in self.f_list:passelse:self.f_list.append(function)def do_test(self):params = []for func in self.f_list:func(params)class Api:def __init__(self):passdef function(self, params=None):passclass SubApi1(Api):def __init__(self, test):self.test = testtest.register(self.function)def function(self, params=None):print('This is {}\'s {}'.format(self.__class__.__name__, self.function.__name__))class SubApi2(Api):def __init__(self, test):self.test = testtest.register(self.function)def function(self, params=None):print('This is {}\'s {}'.format(self.__class__.__name__, self.function.__name__))t = Test()a1 = SubApi1(t)a2 = SubApi2(t)t.do_test()

输出:

This is SubApi1's functionThis is SubApi2's function
这个例子很明显也能实现回调功能,不过与上篇文章中的例子比起来,很明显,肯定快一点,因为调用__getattribute__会涉及查询操作。同时,这个例子也没有了新式类的限制


0 0
原创粉丝点击