我有一个案例:
x = "me"
class Test():
global x
def hello(self):
if x == "me":
x = "Hei..!"
return "success"
我用shell尝试这个案例。
我如何print x
x
的输出/值是Hei..!
?
我试过
Test().hello # for running def hello
print x # for print the value of x
打印x
后,输出仍为me
。
答案 0 :(得分:3)
您需要在函数内使用global x
而不是类:
class Test():
def hello(self):
global x
if x == "me":
x = "Hei..!"
return "success"
Test().hello() #Use Parenthesis to call the function.
不知道为什么要从类方法更新全局变量,但另一种方法是将x
定义为类属性:
class Test(object): #Inherit from `object` to make it a new-style class(Python 2)
x = "me"
def hello(self):
if self.x == "me":
type(self).x = "Hei..!"
return "success"
Test().hello()
print Test.x