繁体   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