2017-04-14 10 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変数が表示されないのかわかりません。それは1の代わりに2つの入力を必要としているというエラーを発し続けます。しかし、私はクラス内の関数を呼び出すことで、再びそれに自己を供給する必要はないと思いましたか?Pythonでクラス内の関数を使う(自己を使うかしないか)

編集:最後の2つのステートメントがあります。なぜなら、すべてがクラス内のすべてのことを実行していることをテストしているからです。

+2

'sigmoid'は、クラス定義内の関数であるため。 'a1 = ..'と' print a1'をインデントしてクラスの一部にしたのはなぜですか? 'def sigmoid' **をクラス定義の外に**置くのは、それがメソッドではないのではないでしょうか? –

+1

最後の2行のインデントについては確かですか?それはクラスから外れているはずです。 – Astrom

+0

クラスメソッドの中からクラスを呼び出す場合は、 'self.sigmoid(7)'と呼ぶ必要があります。 * outside *から呼び出す場合は、 'obj.sigmoid(7)'を呼び出すために 'Neuralnetwork'の*インスタンス*を作成する必要があります。 –

答えて

0

sigmoidNeuralnetworkクラスのメソッドなので、あなたはクラス定義の後に、それを呼び出している場合は、sigmoid機能を利用することができます前に、最初のNeuralnetworkクラスのインスタンスを作成する必要があります。

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 
Pごとに、

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にクラス名を変更することをお勧めします:あなたはクラス内でそれを使用する必要がある場合

は、メソッド内でブロックを置きますEP 8スタイルガイド:

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

いますが、私は気付か

+0

ありがとう!これは多くの意味があります。 – a1letterword

+0

あなたは大歓迎です! @ a1letterword問題が解決したら回答を受け入れて投票してください。 –

0

あなたのシグモイドメソッドは、自己を全く使用しない、つまりインスタンスに依存しないということです。通常の関数としてクラスの外に置くことができます。それは密接にクラスに関連している場合しかし、あなたはシグモイド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)) 
関連する問題