![](/img/trans.png)
[英]Accessing self within decorator function within a Python class
[英]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個輸入。但是我認為通過在類中調用該函數,我不需要再次為其提供自我嗎?
編輯:這里有最后兩個語句,因為我仍在進行測試,以確保一切都在按類進行。
sigmoid
是Neuralnetwork
類的一種方法,因此,如果要在類定義之后調用它,則需要先創建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樣式指南將類名更改為NeuralNetwork
: https : //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.