Python构建一个使用同一类中的函数的类

时间:2016-07-18 22:11:03

标签: python class

我正在尝试获取一个构造一个类,该类从同一个类中调用一个函数,但是我很难这样做。

我看过了:

Python function pointers within the same Class

但我对所提出的方法没有好运。我创建了这个简单的例子:

#### Libraries ####
# Third Party Libraries  
import numpy as np

#### Defines the activation functions ####
class sigmoid_class(object):
    def __init__(self, z):
        self.z = z

    def activation_fn(self):
        """The sigmoid function"""
        return 1.0/(1.0+np.exp(-self.z))

    def prime(self):
        """The derivative of the sigmoid function"""
        return activation_fn(self.z)*(1-activation_fn(self.z))

a = sigmoid_class(0)
print(a.prime())

当我用print(a.activation_fn(0))测试时,我得到了所需的输出,但是当我尝试`print(a.prime())

I get `NameError: name 'activation_fn' is not defined

我不确定如何解决这个问题以使其正常运行

4 个答案:

答案 0 :(得分:4)

实际应该是:

def prime(self):
    """The derivative of the sigmoid function"""
    return self.activation_fn()*(1-self.activation_fn())

请注意,activation_fn也不需要传递z值 - 它从self开始查看。

答案 1 :(得分:3)

结合两点:

def prime(self):
    """The derivative of the sigmoid function"""
    return self.activation_fn()*(1-self.activation_fn())

activation_fn为自己找到self.z

答案 2 :(得分:2)

public ActionResult SignOut()
 {
       Request.GetOwinContext().Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ExternalCookie);
       return RedirectToAction("Index", "Home");
 }

或者是这样。请注意def prime(self): """The derivative of the sigmoid function""" return self.activation_fn(self.z)*(1-self.activation_fn(self.z)) ,而不只是self.activation_fn

答案 3 :(得分:1)

评论是正确的,您需要引用self.,因为activation_fn未在方法范围内定义,并且您的方法也不会接受任何参数。