![](/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.