原标题:python之4类回调函数的使用方法

将函数作为参数传递给另一个函数,一共分为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)返回搜狐,查看更多

责任编辑:

python中func函数用法_python之4类回调函数的使用方法相关推荐

  1. python中lambda()的用法_python中lambda()的用法

    在C++11和C#中都有匿名函数的存在.下面看看在python中匿名函数的使用. 1.lambda只是一个表达式,函数体比def简单很多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能 ...

  2. python中replace的用法_python中replace的用法是什么?

    python中replace的用法是什么? Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次. r ...

  3. python中random模块用法_Python中random模块用法实例分析

    本文实例讲述了Python中random模块用法.分享给大家供大家参考.具体如下: import random x = random.randint(1,4); y = random.choice([ ...

  4. python func函数用法_Python常见内置高效率函数用法示例

    本文实例讲述了Python常见内置高效率函数用法.分享给大家供大家参考,具体如下: 1.  filter(function,sequence) 将sequence中的每个元素,依次传进function ...

  5. python中print的用法_Python中print函数简单使用总结

    Python中print函数简单使用总结 print函数是Python的入门,每一个学习python的人都绕不开这个函数,下面介绍一下这个函数的用法. 打开电脑,选择python软件,下面选择pyth ...

  6. python中mean的用法_python 的numpy库中的mean()函数用法介绍

    1. mean() 函数定义: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=)[source] Compute the arithm ...

  7. python中tile的用法_Python:numpy中的tile函数

    在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...

  8. python中sleep的用法_python中sleep函数用法实例分析

    本文实例讲述了python中sleep函数用法.分享给大家供大家参考.具体如下: Python中的sleep用来暂停线程执行,单位为秒 #------------------------------- ...

  9. python中where的用法_Python中where()函数的用法详解

    本文主要和大家介绍了详解Python中where()函数的用法,小编觉得挺不错的,现在分享给大家,也给大家做个参,希望能帮助到大家. where()的用法 首先强调一下,where()函数对于不同的输 ...

最新文章

  1. 【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)
  2. 神经网络php代码,慢慢研究
  3. C#面向对象设计模式纵横谈
  4. 深度剖析SOC高性能实时事件关联分析引擎
  5. 优秀分层UI设计模板解析提升网站用户体验,5个UI设计技巧轻松搞定
  6. 二叉树——数据结构课堂作业
  7. C/C++[codeup 2088]排名
  8. 计算机联锁系统组成及工作原理,计算机联锁系统的组成
  9. 大家谈之《区块链大革命》
  10. 从街舞导师王一博.fans机舱生日趴,看“线上应援”新形式
  11. PySimpleGUI经典实践之:这个汉字怎么读?
  12. JZOJ.5236【NOIP2017模拟8.7】利普希茨
  13. FPGA知识查漏补缺——为什么setup summary和hold suammay的data path延时不一致
  14. mac更改管理员密码
  15. IPv6专题系列:01. IPv6地址介绍
  16. npm ERR! code ENOENTnpm ERR! syscall open
  17. 【测试新人必备】测试报告如何编写?模板来了
  18. PLC控制柜结构以及原理
  19. 苹果手机怎么定位安卓手机_苹果手机和安卓手机不同使用感受
  20. Python编程(0-1)——Eric6界面初识

热门文章

  1. .net 日期总结,用于业务时间查询
  2. 天龙八部网单服务器技能修改,天龙八部3门派技能修改介绍
  3. jquery datatable 获取当前分页的数据
  4. Linux下汇编语言学习笔记13 ---
  5. C#生成新浪微博短网址 示例源码
  6. 使用iScroll实现上拉或者下拉刷新
  7. 【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
  8. 2012.2.18-silverlight设计器崩溃
  9. java指令和javac指令总结
  10. [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]