类中的函数内的Python全局变量

时间:2018-03-09 21:49:24

标签: python function class global-variables

我有一个pubnub回调类(回调),里面有一个消息处理函数(message)。处理程序函数在接收消息时由pubnub调用,它应该接受在类之外定义的变量(在另一个类和函数中),并根据它从pubnub接收的消息对其进行修改。此更新的变量应保持全局可用。我已尝试将全局关键字放在所有地方,但它没有帮助:

class callback(SubscribeCallback):  # Listener for channel list

    def message(self, pubnub, message):
        new_var = set(var) - set(message)
        # do stuff with new_var
        var = new_var #Update global variable (it doesn't, but it should!)


class other(django admin command thing):
    def command(self):
        var = ['a', 'b'] #Initial definition - this function is only called once

全局关键字需要在哪里才能使其工作? 我可以从var2访问和弹出,但我不能同时读写var ...

1 个答案:

答案 0 :(得分:1)

您需要在引用

的每个上下文中将变量声明为全局变量
>>> class A:
...     def test(self, m):
...             global X
...             X = X + m
...
>>> class B:
...     def __init__(self):
...             global X
...             X = "Y"
...
>>> b = B()
>>> X
'Y'
>>> a = A()
>>> a.test("Z")
>>> X
'YZ'