2015-06-19 65 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