我正在尝试获取一个构造一个类,该类从同一个类中调用一个函数,但是我很难这样做。
我看过了:
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
我不确定如何解决这个问题以使其正常运行
答案 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
未在方法范围内定义,并且您的方法也不会接受任何参数。