gpt4 book ai didi

Python:如何定义一个行为像函数的类?

转载 作者:行者123 更新时间:2023-12-04 16:23:55 25 4
gpt4 key购买 nike

我想在 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

如何做到这一点?谢谢!

最佳答案

要使对象可调用,您需要添加一个 __call__ 类方法来处理调用。

将您的 apply_to 函数重命名为 __call__ 即可。

关于Python:如何定义一个行为像函数的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69088589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com