1.4. Todo es un objeto

Por si no se ha dado cuenta, acabo de decir que las funciones en Python tiene atributos, y que esos atributos están disponibles en tiempo de ejecución.

Una función, como cualquier otra cosa en Python, es un objeto.

Ejemplo 1.5. Acceso a la cadena de documentación de buildConnectionString

>>> import odbchelper                              1
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> print odbchelper.buildConnectionString(params) 2
server=mpilgrim;uid=sa;database=master;pwd=secret
>>> print odbchelper.buildConnectionString.__doc__ 3
Build a connection string from a dictionary

Returns string.
1 La primera línea importa el programa odbchelper como módulo. Cuando se ha importado un módulo, se puede hacer referencia a cualquiera de sus funciones, clases o atributos públicos. Los módulos pueden hacer esto para acceder a la funcionalidad de otros módulos, y se puede hacer también en el entorno de programación. Esto es un concepto importante, y volveremos sobre ello más adelante.
2 Cuando se quieren utilizar funciones definidas en los módulos importados, debe incluirse el nombre del módulo. No puede decirse sólo buildConnectionString, debe ser odbchelper.buildConnectionString. Si ha utilizado usted clases en Java, esto le sonará vagamente familiar.
3 En lugar de llamar a la función como podría esperarse, pedimos uno de los atributos de la función, __doc__
Nota
import en Python es como require en Perl. Cuando se ha importado un módulo en Python, se puede acceder a sus funciones con módulo.función; cuando se ha requerido un módulo en Perl, se puede acceder a sus funciones con módulo::función.

Todo en Python es un objeto, y casi todo tiene atributos y métodos.[1] Todas las funciones tienen un atributo __doc__ incorporado, que devuelve la cadena de documentación definida en el código fuente de la función.

Esto es tan importante que voy a repetirlo por si no se ha dado cuenta las otras veces: todo en Python es un objeto. Las cadenas son objetos. Las listas son objetos. Las funciones son objetos. Incluso los módulos son objetos, como veremos en seguida.

Lecturas complementarias

Footnotes

[1] Los distintos lenguajes de programación definen “objeto” de formas diferentes. En algunos, todos los objetos deben tener atributos y métodos; en otros, todos los objetos deben admitir subclases. En Python, la definición es más libre; algunos objetos no tienen ni atributos ni métodos, y no todos los objetos admiten subclases (lo veremos en el capítulo 3). Pero todo es un objeto en el sentido de que puede ser asignado a una variable o pasarse como argumento a una función (lo veremos en el capítulo 2).