Habemus Python 2.4

Ernesto Revilla erny en sicem.biz
Mar Nov 30 22:01:38 CET 2004


Cuando el parser lee la función, al procesar A, sigue siendo una función.

Se convierte en método, cuando llama a la metaclase para construir la clase:

>>> def  met1(self,arg):
...     print "Arg:",arg
...
>>> met1
<function met1 at 0x00F6CE30>
>>> A=type('A',(object,),{'met1': met1})
>>> A.met1
<unbound method A.met1>
>>>

Como el decorador actúa antes de de la llamada a la metaclase, es decir, 
al terminar el cuerpo de la función, el decorador tiene como entrada la 
función y devuelve una función.

Erny

Marcos Sánchez Provencio escribió:

>mm, parece que se convierte de método a función :-|
>
>El mar, 30-11-2004 a las 20:58 +0100, Ernesto Revilla escribió:
>  
>
>>Los decoradores básicamente manipulan objetos de función, de manera que:
>>class A:
>>    @decorar
>>    def met1(....):
>>         ....
>>
>>
>>met1 =  decorar(met1)
>>
>>de esa manera:
>>
>>class A:
>>    @staticmethod
>>    def met1(arg1):
>>        ....
>>
>>se equivale a:
>>
>>class A:
>>    def met1(arg1):
>>        ....
>>
>>    met1=staticmethod(met1)
>>
>>es fácil hacer otros decoradores, simplemente hay que crear una función 
>>que recibe como argumento una función que la manipula:
>>
>>esta función crea un wrapper que comprueba que el primer argumento a la 
>>función sea un entero
>>
>>def checkType(f):
>>    def wrapper(self, *args, **kwargs):
>>        if type(args[0])!=int:
>>            raise TypeError, "Argumento 1 tiene que ser entero
>>        return f(*args,**kwargs)
>>    return wrapper
>>
>>class A:
>>    @checkType
>>    def met1(self, arg):
>>        print arg
>>
>>No lo he probado, todavía no tengo python 2.4 instalado.
>>
>>Erny
>>
>>
>>
>>
>>Anibal Fenoglio escribió:
>>
>>    
>>
>>>El mar, 30-11-2004 a las 18:27 +0100, Pepe Aracil escribió:
>>> 
>>>
>>>      
>>>
>>>>El Martes, 30 de Noviembre de 2004 14:17, Chema Cortés escribió:
>>>>   
>>>>
>>>>        
>>>>
>>>>>Ya tenemos la versión final del python-2.4 . Ahora a sufrir con las
>>>>>actualizaciones :-P
>>>>>
>>>>>http://www.python.org/2.4/
>>>>>
>>>>>A ver si mañana puedo sacar el artículo con las novedades de esta versión.
>>>>>De momento podéis ver una relación de novedades en:
>>>>>http://www.python.org/2.4/highlights.html
>>>>>     
>>>>>
>>>>>          
>>>>>
>>>>Estoy impaciente por saber entre otras cosas como funcionan los decoradores. 
>>>>Me he le ido la PEP, pero entre que no controlo mucho el inglés y que estoy 
>>>>algo espesito por culpa del resfriado, no pillo una :(
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>>Jaja, yo estoy igual, no puedo terminar de enterder para que son y/o
>>>como funcionan los "decoradores", espero que pronto encontrar algo al
>>>respecto en el dichoso idioma español ;)
>>>
>>>Saludos
>>>
>>>		Anibal
>>>
>>> 
>>>
>>>      
>>>
>>>>Saludos.
>>>>_______________________________________________
>>>>Python-es mailing list
>>>>Python-es en aditel.org
>>>>http://listas.aditel.org/listinfo/python-es
>>>>
>>>>        
>>>>
>>> 
>>>
>>>------------------------------------------------------------------------
>>>
>>>_______________________________________________
>>>Python-es mailing list
>>>Python-es en aditel.org
>>>http://listas.aditel.org/listinfo/python-es
>>> 
>>>
>>>      
>>>
>>    
>>
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>  
>


-- 
Ernesto Revilla
sicem sl
Pol. Ind. Juncaril, c/ Loja Parc. 7 Local 13
18220 Albolote
http://www.sicem.biz
Tel: 958 468773 - 637 716189
MSN: aerd en mx3.redestb.es
ICQ: 163888521




---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0443-2, 21/10/2004
Comprobado en: 30/11/2004 22:01:40
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com


------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es