如何使函数在函数外部使用变量,但在 class 的方法中
How to make a function use a variable outside the function, but in a method of a class
我正在尝试创建一个能够从函数外部访问变量的函数。但是,这个变量需要在class中定义。为了清楚起见,我将在代码中定义一个简化的函数。
class Stuff():
def __init__(self):
print("Initialized")
def forward(self,x):
y=4
x=func(x)
return x
def func(x):
global y
return x+y
stuff = Stuff()
print(stuff.forward(4))
所以,我试图让 func(x) 使用 "forward" 方法中定义的 y,但是当我 运行 这段代码时,我得到错误 "global name y is not defined"。任何帮助深表感谢。
你不能。 member 变量属于 class 的特定实例。你必须知道实例才能做到这一点,所以你最好也将 y
传递给你的函数。
你也可以反其道而行之。在forward
函数中使用global
定义一个全局y
变量,然后从func
访问它。但是,不要。这是不好的做法,总是。将 y
传递给 func。
我正在尝试创建一个能够从函数外部访问变量的函数。但是,这个变量需要在class中定义。为了清楚起见,我将在代码中定义一个简化的函数。
class Stuff():
def __init__(self):
print("Initialized")
def forward(self,x):
y=4
x=func(x)
return x
def func(x):
global y
return x+y
stuff = Stuff()
print(stuff.forward(4))
所以,我试图让 func(x) 使用 "forward" 方法中定义的 y,但是当我 运行 这段代码时,我得到错误 "global name y is not defined"。任何帮助深表感谢。
你不能。 member 变量属于 class 的特定实例。你必须知道实例才能做到这一点,所以你最好也将 y
传递给你的函数。
你也可以反其道而行之。在forward
函数中使用global
定义一个全局y
变量,然后从func
访问它。但是,不要。这是不好的做法,总是。将 y
传递给 func。