0

我有两个课程以防万一:

测试.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:必须使用函数实例作为第一个参数调用未绑定的方法映射()(改为获取函数实例)

我不太清楚这里出了什么问题,我可以给点建议吗?谢谢!

4

2 回答 2

3

Python 函数总是将类或实例作为类函数/方法的第一个参数。

class Functions:
    def mapping(self, func, x):
        return func(x)

或者,如果您不想总是创建类的实例,请执行以下操作以创建类方法而不是实例方法。

class Functions:
    @classmethod
    def mapping(cls, func, x):
        return func(x)

@操作员创建一个函数 decorator,如果它是您想更多地搜索的主题。

于 2012-11-02T16:28:14.813 回答
1

我无法理解您的代码(似乎不完整,并且名称不匹配:映射->映射,流->测试),但是从错误消息来看,您似乎需要构造一个实例功能第一。所以你需要类似的东西:

func = stream.Functions()
func.map(testdouble, [1, 2, 3, 4, 5])

正如 Kurt 指出的那样,您还需要正确声明 map/mapping 方法(在决定是否需要实例或类方法之后)。

于 2012-11-02T16:24:14.517 回答