2012-11-02 72 views
0

我有两个班的情况:类型错误在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: unbound method mapping() must be called with Functions instance as first argument (got function instance instead)

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

回答

1

我无法理解您的代码(它看起来不完整,名称不匹配:映射 - >映射,流 - >测试),但从错误消息看来,您似乎需要首先构造Function的一个实例。所以,你需要这样的东西:

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

您还需要正确申报图/映射方法(决定是否要一个实例或类方法后),库尔特指出。

+0

谢谢米莎!这有帮助! – shh

3

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

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

另外,如果你不想总是创建类的实例,请执行下列操作创建一个类的方法,而不是一个实例方法。

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

@运营商创建一个功能装饰,如果它是你想谷歌更多的话题。