2017-04-14 51 views
3
class Neuralnetwork(object): 

    def __init__(self, data):  
     self.data = data 

    def scan(self): 
     print(self.data) 

    def sigmoid(self, z): 
     g = 1/(1 + math.exp(-z)) 
     return (g) 

    a1 = sigmoid(7) 
    print a1 

我不知道爲什麼它不會與雙曲線函數打印A1變量。它不斷髮出一個錯誤,說它需要2個輸入,而不是1個。但是我認爲通過在類中調用函數,我不需要再給自己提供自己的東西嗎?函數在Python類中(使用自己或沒有)

編輯:我有最後兩條語句,因爲我仍在測試一些事情,以確保所有內容都按照課程內容進行。

+2

因爲'sigmoid'是類定義中的函數。你爲什麼縮進'a1 = ..'和'打印a1'成爲班級的一部分?如果它不是一種方法,爲什麼不把它放在類定義的外部** def sigmoid **之外? –

+1

你確定你最後兩行的縮進。似乎它應該脫離課堂。 – Astrom

+0

如果你是從*裏面調用一個類方法,你需要把它稱爲'self.sigmoid(7)'。如果你想從* outside *之外調用它,那麼你需要創建一個'Neuralnetwork'的實例*來調用'obj.sigmoid(7)'。 –

回答

0

sigmoidNeuralnetwork類的方法,所以你需要首先創建Neuralnetwork類的實例,然後才能利用sigmoid功能,如果你的類定義後調用它:

class Neuralnetwork(object): 
    def __init__(self, data):  
     self.data = data 

    def scan(self): 
     print(self.data) 

    def sigmoid(self, z): 
     g = 1/(1 + math.exp(-z)) 
     return (g) 

# replace data and z with appropriate values 
nn = Neuralnetwork(data) 
a1 = nn.sigmoid(z) 
print a1 

如果您需要在類中使用它,把塊的方法中:

class Neuralnetwork(object): 
    def __init__(self, data):  
     self.data = data 

    def scan(self): 
     print(self.data) 

    def sigmoid(self, z): 
     g = 1/(1 + math.exp(-z)) 
     return (g) 

    def print_sigmoid(self, z): 
     a1 = self.sigmoid(z) 
     print a1 

# replace data and z with appropriate values 
nn = Neuralnetwork(data) 
nn.print_sigmoid(z) 

我還建議改變類名NeuralNetwork,按照在P EP 8風格指南:https://www.python.org/dev/peps/pep-0008/#class-names

+0

謝謝!這很有意義。 – a1letterword

+0

不客氣! @ a1字句如果他們解決了您的問題,請接受/投票答案。 –

0

與類的外部兩個最後一行(不縮進),您可以修改他們:

a1 = Neuralnetwork(data).sigmoid(7) 
print(a1) 

,但你必須給數據類

0

我注意到你的sigmoid方法根本不使用self,也就是說,它不依賴於實例。你可以把它作爲一個普通函數放在課外。但如果是密切相關的類時,你可能更喜歡附上它作爲一個靜態方法,從乙狀結腸DEF完全刪除自己:

#/usr/bin/env python3 

import math 

class NeuralNetwork(object): 

    def __init__(self, data):  
     self.data = data 

    def scan(self): 
     print(self.data) 

    @staticmethod 
    def sigmoid(z): 
     g = 1/(1 + math.exp(-z)) 
     return (g) 

a1 = NeuralNetwork('abc') 
print(a1.sigmoid(7)) 
相關問題