En los temas que vimos hasta ahora nos hemos encontrado con numerosos tipos provistos por Python, los números, las cadenas de caracteres, las listas, las tuplas, los diccionarios, los archivos, etc. Cada uno de estos tipos tiene sus características, tienen operaciones propias de cada uno y nos proveen una gran cantidad de funcionalidades que podemos utilizar para nuestros programas.
Como ya se dijo en unidades anteriores, para saber de qué tipo es una
variable, utilizamos la función type
, y para saber qué métodos y
atributos tiene esa variable utilizamos la función dir
.
>>> a = open("archivo.txt")
>>> type(a)
<type 'file'>
>>> dir(a)
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__',
'__getattribute__', '__hash__', '__init__', '__iter__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__',
'close', 'closed', 'encoding', 'fileno', 'flush', 'isatty', 'mode', 'name',
'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek',
'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
En este caso, la función dir
nos muestra los métodos que tiene un objeto
del tipo file
. Podemos ver en el listado los métodos que ya hemos visto
al operar con archivos, junto con otros métodos con nombres raros como
__str__
o __doc__
, estos métodos son especiales en Python, más adelante
veremos para qué sirven y cómo se usan.
En el listado que nos da dir
están los atributos y métodos mezclados. Si
necesitamos saber cuáles son atributos y cuáles son métodos, podemos
hacerlo nuevamente mediante el uso de type
.
>>> type (a.name)
<type 'str'>
>>> a.name
'archivo.txt'
>>> type (a.tell)
<type 'builtin_function_or_method'>
>>> a.tell()
0L
Es decir que name es un atributo del objeto (el nombre del archivo),
mientras que tell
es un método, que para utilizarlo debemos llamarlo con
paréntesis.
Nota Como ya sabemos, en Python, los métodos se invocan con la notación punto:
archivo.tell()
, cadena.split(":")
.
Analicemos la segunda expresión. El significado de ésta es: la
variable cadena
, llama al método split
(del cual es dueña por tratarse
de una variable de tipo str
) con el argumento ":"
.
Sería equivalente a llamar a la función split
pasándole como primer
parámetro la variable, y como segundo parámetro el delimitador. Pero
la diferencia de notación resalta que el método split
es un método
de cadenas, y que no se lo puede utilizar con variables de otros
tipos.
Esta notación provocó un cambio de paradigma en la programación, y es uno de los ejes de la Programación Orientada a Objetos