Cómo llamar a la función global desde el método de clase

Tengo el siguiente código:

def __static_func(name): print 'Name = ' + name class A: def __init__(self, name): self.name = name def fun(self): __static_func(self.name) a = A('foo') a.fun() 

Cuando se lanza en Python 2.7, produce

 NameError: global name '_A__static_func' is not defined 

Entonces, la pregunta es ¿cómo invoco la función global desde el método de clase?

Recientemente estuve leyendo un libro ” Aprendiendo Python por O’Reilly ” (página 944, Capítulo 31) y se mencionó que cuando se usan dobles guiones __ como los caracteres iniciales de un método o una variable en la Class , automáticamente se agrega el _classname a esa función donde classname es el nombre de la clase. Esto se hace para localizar un nombre a la clase a la que pertenece. Esto se denomina Nombre Mangling en el contexto de los atributos de la clase Pseudoprivate .

De esta manera, puede usar el mismo nombre __variable en dos clases diferentes A y B ya que las variables / métodos se convertirán de forma privada en _A__variable y _B__variable respectivamente. Así que solo nombre su función global con otro guión bajo, por ejemplo, para evitar este conflicto.

No utilice guiones bajos.

 def _static_func(name): print 'Name = ' + name class A: def __init__(self, name): self.name = name def fun(self): _static_func(self.name) a = A('foo') a.fun() 

Deberia trabajar