一、装饰器 1.1什么是装饰器 ‘装饰’代指为被装饰对象添加新的功能,’器’代指器具/工具,装饰器与被装饰的对象均可以是任意可调用对象。概括地讲,装饰器的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。 装饰器经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理 ...
分类:
编程语言 时间:
2021-01-04 10:54:52
阅读次数:
0
1. 背景: C++有不同的调用形式:函数指针、lambda表达式、有operator()的类对象等。 形式不同但调用方式却相同。为了能够统一,引入std::function和std::bind,来实现。 例子: // 普通函数 int add(int a, int b){return a+b;} ...
分类:
编程语言 时间:
2020-11-08 17:55:55
阅读次数:
33
作者:georgeguo链接:https://www.jianshu.com/p/f191e88dcc80来源:简书 可调用对象的几种定义 是一个函数指针 是一个具有operator()成员函数的类的对象; 可被转换成函数指针的类对象; 一个类成员函数指针; C++中可调用对象的虽然都有一个比较统一 ...
分类:
编程语言 时间:
2020-11-07 16:21:58
阅读次数:
22
__call__方法和可调用对象 定义了call方法的对象,称为可调用对象,即该对象可以像函数一样调用 a = 30 b = 50 c = a+b >c = a.__add__(b) obj() >__call__ 1 class SalaryAcount: 2 def __call__(self, ...
分类:
编程语言 时间:
2020-09-18 00:01:28
阅读次数:
36
在没有C++11的std::function和std::bind之前,我们使用函数指针的方式是五花八门,结构很繁琐难懂。C++11中提供了std::function和std::bind统一了可调用对象的各种操作。 1.std::function简介 std::function首先是可调用对象,本质上 ...
分类:
编程语言 时间:
2020-09-17 12:36:45
阅读次数:
22
概述 std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表。一般而言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个(M ...
分类:
编程语言 时间:
2020-09-10 22:32:59
阅读次数:
53
1.类中的特殊方法(魔法方法) 在 Python 中有一些特殊的方法,它们是 Python 内置的方法,通常以双下划线来命名,比如__init__、__repr__ 等等,在类中使用它们时往往较少的代码就可以发挥很大的作用,提高开发效率,因此在 Python 中称这些方法为“魔法方法” 在 Pyth ...
分类:
编程语言 时间:
2020-09-09 19:18:38
阅读次数:
53
python基础复习(二) 一、文件操作 python中的文件操作 1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r 2. 通过句柄对文件进行操作 data=f.read() 3. 关闭文件 f.close( ...
分类:
编程语言 时间:
2020-07-01 19:55:49
阅读次数:
61
类模板 std::function 是一种通用的多态函数包装器。 std::function 可以存储、复制和调用任何 Callable 目标的实例、函数、lambda 表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。 所存储的可调用对象被称为目标的 std::functio ...
分类:
编程语言 时间:
2020-06-26 12:28:01
阅读次数:
57
C++中函数指针的用途非常广泛,例如回调函数,接口类的设计等,但函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::bind这两件大杀器。 std::function vs 函数指 ...
分类:
其他好文 时间:
2020-06-14 20:33:58
阅读次数:
93