【发布时间】:2021-02-27 18:01:28
【问题描述】:
假设 self.sigma 是一个浮点数,我定义了一个返回函数 a 的函数。
def f(self):
a = lambda i: self.sigma*i**2
return a
现在我想扩展 a 的功能,只要 self.sigma 是一个矩阵:
self.sigma = sigma[i,j]
其中 sigma 是一个二维 numpy 数组。
是否可以定义一个包装器来做到这一点? 我想要类似的东西:
def f(self):
a = lambda i,j: self.sigma[i,j]*i**2
return a
没有明确地重写它。这是最好的方法吗?
附加信息: 在我的程序中 f 返回五个函数而不是一个。在程序的上下文中,将所有这些函数封装在一个函数 f 中是有意义的。
【问题讨论】:
-
是否可以使用 switch/case 语句检查
self.sigma和type()的类型并根据它返回的 lambda 来回答您的问题?如果不是,恐怕我不明白你说的“不想显式重写”是什么意思,“它”指的是什么 -
是的,确实如此。但我试图找到另一个走动。我不想在 f 中写一行代码。这就是为什么我认为装饰器可能会有所帮助。
标签: python wrapper python-decorators