为什么我们在python中有可调用的对象?

Sta*_*low 11 python callable

可调用对象的目的是什么?他们解决了什么问题?

Ale*_*lli 13

Python中可以调用多种对象,它们可以用于多种用途:

  • 函数是可调用的,它们可以携带来自外部函数的"闭包"
  • 类是可调用的,调用类可以获得该类的实例
  • 方法是可调用的,用于与特定实例有关的类似函数的行为
  • staticmethods和classmethods是可调用的,类似于方法的功能,当功能在某种意义上属于"整个类"时(staticmethods的有用性是可疑的,因为类方法也可以做得很好;-)
  • 生成器是可调用的,调用生成器会获得一个迭代器对象
  • 最后,这可能是你所询问的具体内容(没有意识到以上所有内容都是对象...... !!!),你可以编写一个实例可调用的类:这通常是调用最简单的方法更新实例的状态以及依赖它(虽然具有合适闭包的函数和绑定方法,提供替代方案,当您需要执行调用其他特定操作时,可调用实例是一种方法相同的对象:例如,您希望能够调用的对象,但也应用索引,最好是一个可调用和可索引的类的实例;-).

Python的标准库提供了大量的"他们解决的问题"的例子,其中包含了我上面提到的每种特定类型的许多案例.


Fel*_*ing 9

它们接受参数并根据这些参数返回结果.

可调用一个函数的只是一个抽象的形式RESP,它定义了一个对象的行为像的功能的接口(即,接受参数).

由于函数是第一类对象,因此很明显函数是可调用对象.如果您正在讨论该__call__方法,这只是许多特殊方法中的一种,您可以使用这些方法重载自定义对象的行为,例如,对于算术运算或者定义在调用对象时会发生什么.

为什么要使用这种方法的一个想法是让某种工厂对象本身创建其他对象.