2015-06-19 60 views
0
import numpy as np 

class Y: 
    def __init__(self): 
     return None 

    def f(self,x): 
     return x 

    def g(self,x): 
     return f(x)**2 
y=Y() 
print y.g(3) 

我知道上面的代码会给出错误,但不知何故我想做下面的事,有没有修改呢?Python:一种方法里面的方法

+1

更改 “返回F(X)** 2” 到 “回归self.f(X)** 2” –

+3

' __init__'不应该返回任何东西。如果你希望它什么都不做,可以使用'pass'。 –

+0

每个函数都会返回一些内容。如果该函数有一个单独的'return'或者完全没有'return'语句,则默认返回'None'。在传统上没有'return'语句的方法的末尾添加'return None'并不会影响它。 – TigerhawkT3

回答

3

它不起作用的唯一原因是因为您有f(x)**2而不是self.f(x)**2。做出改变,它会很好地工作。

1

是。它只需要一个简单的改变。由于f(x)是一种方法,因此您需要在某个对象上调用它。你想要的这里是调用它自己,所以很干脆该行变为:

return self.f(x)**2