2011-05-17 10 views
7

¿Es correcto para cambiar el valor del atributo __name__ del objeto, como en el siguiente ejemplo:¿Puedo cambiar el atributo __name__ del objeto en python?

>>> 
>>> def f(): pass 
... 
>>> f.__name__ 
'f' 
>>> b = f 
>>> b.__name__ 
'f' 
>>> b.__name__ = 'b' 
>>> b 
<function b at 0x0000000002379278> 
>>> b.__name__ 
'b' 
>>> 
+0

Pruebe '>>> f' después de eso ... – delnan

+9

Parece que ha respondido su propia pregunta ... –

+1

Por lo que sé, funcionará, pero probablemente no sea una buena idea, supongo que hará seguimientos y más difícil de seguir. ¿Por qué quieres? –

Respuesta

3

Cambiar el nombre de una función no hace que el nuevo nombre exigible:

>>> def f(): print 'called %s'%(f.__name__) 
... 
>>> f() 
called f 
>>> f.__name__ = 'b' 
>>> f() 
called b 
>>> b() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'b' is not defined 

te había tiene que definir b para llamarlo. Y como viste, simplemente asignar b=f no define una nueva función.

Cuestiones relacionadas