我有以下两个课程:
testing.py:
class Functions:
def mapping(func, x):
return func(x)
我尝试运行以下代码:
import testing
def doubleMe(data):
return data * data
res = stream.Functions.map(testdouble, [1,2,3,4,5])
print res
尝试运行代码后,我收到了错误
TypeError:必须使用Functions调用未绑定方法mapping() instance作为第一个参数(取而代之的是函数实例)
我不太确定这里出了什么问题,我可以提供一些建议吗?谢谢!
答案 0 :(得分:3)
Python函数总是将类或实例作为类函数/方法的第一个参数。
class Functions:
def mapping(self, func, x):
return func(x)
或者,如果您不想始终创建类的实例,请执行以下操作以创建类方法而不是实例方法。
class Functions:
@classmethod
def mapping(cls, func, x):
return func(x)
@
运算符会创建一个函数装饰器,如果它是您想要谷歌更多的主题。
答案 1 :(得分:1)
我无法理解你的代码(它似乎不完整,名称不匹配:映射 - >地图,流 - >测试),但是从错误信息来看,似乎你需要首先构造一个Function实例。所以你需要这样的东西:
func = stream.Functions()
func.map(testdouble, [1, 2, 3, 4, 5])
你还需要正确地声明地图/映射方法(在决定是否需要实例或类方法之后),正如Kurt指出的那样。