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