ITPub博客

首页 > > > python之4类回调函数的使用方法

python之4类回调函数的使用方法

作者:youou 时间:2019-10-14 09:48:17 0 删除 编辑

任性的90后boy 



将函数作为参数传递给另一个函数,一共分为4种情况:

将普通函数传递给普通函数

将普通函数传递给类成员函数

将类成员函数传递给普通函数

将类成员函数传递给类成员函数

这4种情况,在python中都支持。

#!/usr/bin/python3

class Person:

def __init__(self):

pass

def callback(self, data, param = None):

print(self.__class__.__name__ + " callback:")

print("data: " + str(data))

print("param: " + str(param))

def do_call_func(self, func, data, param = None):

print(self.__class__.__name__ + " do_call_func:")

func(data, param)

def do_call_class_func(self, func, data, obj, param = None):

print(self.__class__.__name__ + " do_call_class_func:")

func(obj, data, param)

def mycallback(data, param = None):

print("data: " + str(data))

print("param: " + str(param))

def do_call_func(func, data, param = None):

func(data, param)

def do_call_classfunc(func, data, obj, param = None):

func(obj, data, param)

person = Person()

#common func as callback pass to common func

do_call_func(mycallback, "1111111111", "xxx")

#common func as callback pass to class func

person.do_call_func(mycallback, "22222222")

#class func as callback pass to common func

do_call_classfunc(Person.callback, "333333333", person, None)

#class func as callback pass to class func

person.do_call_class_func(Person.callback, "44444444", person, None)

需要注意的是,如果回调函数是一个类成员函数,那么调用该回调函数时,第一个参数必须是该类的一个对象,也就是说,必须将该类的对象,作为一个普通参数,传递给调用该回调函数的函数。

比较拗口,上面的最后两个调用,都是将person对象作为第3个参数传递给了某个函数,某个函数内部又将该对像作为回调函数的第一个参数来调用回调函数:

do_call_classfunc(Person.callback, "333333333", person, None)

person.do_call_class_func(Person.callback, "44444444", person, None)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4729/viewspace-3168627/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 初识神经网络
请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    294
  • 访问量
    13387