Clase str
Chema Cortés
py en ch3m4.org
Jue Dic 30 13:44:34 CET 2004
El Jueves, 30 de Diciembre de 2004 13:20, Pepe Aracil escribió:
> Ya está claro, Gracias ;D.
>
> Además he descubierto que el método __init__() es llamado por el método
> __new__().
>
> >>> class strA(str):
>
> ... def __init__(self,value):
> ... print "función init valor=%s" % value
> ... def __new__(cls,value):
> ... print "función new clase=%s" % cls
> ... print "función new valor=%s" % value
> ...
>
> >>> j=strA("Hola")
>
> función new clase=<class '__main__.strA'>
> función new valor=Hola
>
> >>> j
¡Ojo!, que el método __new__ debe devolver _obligatoriamente_ una instacia de
la clase. Si lo haces bien, todo sale como debería:
>>> class strA(str):
... def __init__(self,value):
... print "función init valor=%s" % value
... def __new__(cls,value):
... print "función new clase=%s" % cls
... print "función new valor=%s" % value
... return str.__new__(cls,value)
...
>>> s=strA("Hola")
función new clase=<class '__main__.strA'>
función new valor=Hola
función init valor=Hola
Y aclarar que el método __new__ nunca llama al __init__. Son dos pasos
independientes, la creación y la inicialización de una instancia.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20041230/55a5e5fc/attachment.pgp>
------------ 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