如何定义一个行为类似于函数的Python类?

3
我希望在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属性。

如何实现这一点?谢谢!

1个回答

8
为使一个对象可被调用,您需要添加一个__call__类方法来处理调用。
将您的apply_to函数重命名为__call__即可正常工作。

谢谢!它解决了我的问题! - AGuilloux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接