gracias por los comentarios!!
El día 5 de agosto de 2014, 19:59, Daπid <davidmen...@gmail.com> escribió: > On 6 August 2014 00:43, Jose Caballero <jcaballero....@gmail.com> wrote: >> >> En particular, mi colega me pregunta que por que python implementa la >> funcion len( ) pero no existe el metodo len() para clases como >> list, string, etc. > > > Sí existe, pero se llama __len__(). La existencia de algunos builtins está > clara: son propiedades muy básicas útiles para muchos objetos diferentes. Si > simplemente existiera el método .len(), un programador perezoso podría > llamar al método correspodiente .size() o .shape() (e.g.: arrays de Numpy), > y trabajar con secuencias sería mucho más difícil. ¿Cómo de larga es? ¿Tiene > el método len()? > > Al fijar un método mágico y un builtin como alias, Python enfuerza una API > concreta para cualquier tipo de secuencias. > > Funciones como max() o min() son operaciones muy comunes, que se benefician > enormemente de estar programadas en C. De nuevo, las secuencias en la > biblioteca estandard podrían haber implementado .max() en C, pero entonces > tendríamos que volver a reimplementarlo para cada nuevo clase que creáramos > (y la API C es dura). > > El caso de type() es que el intérprete de Python sabe mejor qué es cualquier > objeto que ellos mismos. Podría haberse implementado como un método añadido > automáticamente a cualquier objeto, pero sería añadir magia negra porque: > > class Nothing(): > pass > > tendría métodos definidos, y podría ser sobreescrito: > > class Pranker(object): > def type(self): > import antrigravity > return None > > Está claro que debería ser de sólo lectura, pero lo haría un caso especial. > > > /David. > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/