python - Python:如何定义一个行为像函数的类?
问题描述
我想在 python 中定义一个行为类似于具有附加属性的函数的类。特别是,它应该无缝地应用于变量。
让我们试着用一个数学例子来解释。假设我非常喜欢正弦函数,但也对它们的频率感兴趣。函数 x -> sin(omega x) 具有属性frequency,即 omega 的值。它也可以应用于浮点 x。
我可以写:
from numpy import sin, pi
class SinFunc:
def __init__(self, omega):
self.frequency = omega
def apply_to(self, x):
return sin(self.frequency * x)
然后我可以使用正弦函数:
MySinFunc = SinFunc(3)
print(MySinFunc.frequency)
print(MySinFunc.apply_to(pi))
# output
# 3
# 0 (almost!)
但是我想要的是能够直接写,仍然定义MySinFunc(pi)
了属性频率。
如何做到这一点?谢谢!
解决方案
要使对象可调用,您需要添加一个__call__
处理调用的类方法。
将您的apply_to
函数重命名为__call__
,它将起作用。
推荐阅读
- html - 在 image1 旁边和 image2 HTML 下对齐文本
- android - 边距设置为 Match_Parent。在模拟器中工作,但在真实设备上显示空间
- sbt - 条件scalacSettings / settingKey
- c# - 如何在 C++ 中使用 char[] 在 C# 中进行字符串化
- json - 使用 jq / bash 通过属性获取 JSON 对象
- azure - 在两个 Azure CSP 订阅之间迁移 Azure DevOps
- java - 如何清除谷歌地图中的位置标记
- django - 在 BinaryField 的模板中显示文档
- bash - 在目录中播放视频之间添加 n 秒的延迟
- typescript - Typescript中带有条件的对象接口