【发布时间】:2021-11-04 08:56:52
【问题描述】:
我想在 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),属性frequency仍然定义。
如何做到这一点? 谢谢!
【问题讨论】: