如何在Python中访问全局变量?

时间:2014-04-01 04:43:37

标签: python class methods global-variables

我有一个案例:

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

1 个答案:

答案 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