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
我不确定为什么它不会使用sigmoid函数打印a1变量。它不断发出一个错误,说它需要2个输入而不是1个。但是我认为通过调用类中的函数,我没有再次为它提供自我?
编辑:我在那里有最后两个陈述,因为我还在测试一些东西,以确保一切都在做它在课堂上应该做的事情。
答案 0 :(得分:0)
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
答案 1 :(得分:0)
使用课外的最后两行(没有缩进),您可以使用以下命令修改它们:
a1 = Neuralnetwork(data).sigmoid(7)
print(a1)
但你必须向你的班级提供数据
答案 2 :(得分:0)
我注意到你的sigmoid方法根本不使用self,也就是说,它不依赖于实例。您可以将它作为正常功能放在课外。但是如果它与类紧密相关,你可能更喜欢将它作为静态方法包含在内,从sigmoid def中完全删除self:
#/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))