Python 求解错误:局部变量';柜台';分配前参考

Python 求解错误:局部变量';柜台';分配前参考,python,Python,关于全局的小问题。我有以下代码: counter = 0 class A(): global counter def connect(): counter += 1 print("Opening connection",counter) # DO STUFF def disconnect(): counter -= 1 print("Closing conne

关于全局的小问题。我有以下代码:

counter = 0
class A():
    global counter

    def connect():
        counter += 1
        print("Opening connection",counter)
        # DO STUFF

    def disconnect():
        counter -= 1
        print("Closing connection",counter)
        # DO STUFF
每次连接或断开连接时,我都想知道打开的连接数
计数器
(不仅仅是一个实例,而是所有实例,因此它应该是静态的)。但当运行代码时,我得到:

local variable 'counter' referenced before assignment

为什么呢?考虑到<代码>()<代码>位于其他文件中,而不是代码>主< /代码>。< /P> < P>如注释所述,<代码> Global < /Cord> >声明仅在函数或方法中工作。

计数器=0
类别A():
def connect():
全局计数器
计数器+=1
打印(“打开连接”,计数器)
#做事
def disconnect():
全局计数器
计数器-=1
打印(“关闭连接”,计数器)
#做事

您应该在函数中移动全局计数器

此外,如果使用多线程/多处理,则在更新计数器时应使用信号量。

必须执行以下操作:

counter = 0
class A():

    def connect():
        global counter
        counter += 1
        print("Opening connection",counter)
        # DO STUFF

    def disconnect():
        global counter
        counter -= 1
        print("Closing connection",counter)
        # DO STUFF

“全局”声明仅在函数/方法中有效。您不需要在类中编写lobal计数器,但必须在methods@Michael但是,我知道,事实上我编辑了,我在写谢谢的时候犯了一个错误。如果我有两个
A()。附言-这个评论字数限制令人恼火。