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