簡體   English   中英

在python的類中使用函數(是否使用self)

[英]Using a function within a class in python (to use self or not)

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

我不確定為什么它不會使用S型函數打印a1變量。 它一直在啟動一個錯誤,提示它需要2個輸入而不是1個輸入。但是我認為通過在類中調用該函數,我不需要再次為其提供自我嗎?

編輯:這里有最后兩個語句,因為我仍在進行測試,以確保一切都在按類進行。

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)

我還建議按照PEP 8樣式指南將類名更改為NeuralNetworkhttps : //www.python.org/dev/peps/pep-0008/#class-names

使用課程外的最后兩行(無縮進),可以使用以下命令修改它們:

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

但是你必須給課堂上的數據

我注意到您的sigmoid方法根本不使用self,也就是說,它不依賴於實例。 您可以將其作為常規功能放在類之外。 但是,如果它與該類密切相關,則您可能希望將其封裝為靜態方法,從而將自身從S型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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM