Lets talk a bit more about scopes. Any class and function can implicitly use variables from the global scope: v = global def f(): print(f{v=}) f() # v=global Or from any other enclosing scope, even if it is defined after the fucntion definition: def f(): v1 = local1 def f2(): def f3(): print(f{v1=}) print(f{v2=}) v2 = local2 f3() f2() f() # v1=local1 # v2=local2 Class body is a tricky case. It is not considered an enclosing scope for functions defined inside of it: v = global class A: v = local print(fA {v=}) def f(): print(ff {v=}) # A v=local A.f() # f v=global 1.2K views15:00