Python中的TypeError

时间:2012-11-02 16:21:14

标签: python

我有以下两个课程:

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作为第一个参数(取而代之的是函数实例)

我不太确定这里出了什么问题,我可以提供一些建议吗?谢谢!

2 个答案:

答案 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指出的那样。