Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre que son los metodos estaticos de una clase.

Anuncios

Si repasamos un poco, cuando creamos una clase y le asignamos un nombre que se convierte en un namespace, y en algunas ocasiones tiene mas sentido agrupar algunas funcionalidades bajo este, y aqui los metodos estaticos son ideales para estos casos ya que, a diferencia de los metodos normales, no se les pasa ningun argumento especial, vamos a analizar un ejemplo para ello crearemos un nuevo archivo que llamaremos estatico.py y le agregaremos el siguiente codigo:

estatico.py

class UtilCadena:

	@staticmethod
	def es_palindromo(t, case_nosensitivo=True):
		t = ''.join(c for c in t if c.isalnum())
		if case_nosensitivo:
			t = t.lower()
		for c in range(len(t) // 2):
			if t[c] != t[-c -1]:
				return False
		return True

	@staticmethod
	def get_palabras_unicas(sentencia):
		return set(sentencia.split())
Anuncios
Anuncios

Como pueden ver tenemos una clase llamada UtilCadena, observen que definimos dos funciones y ambas son estaticas, esto es gracias a la palabra staticmethod, por cada funcion que definamos si deseamos convertirla en estatica debemos informarla antes de la misma, tal como se ve en el ejemplo, la primera es para chequear si la frase es un palindromo, donde primero le pasaremos el texto a analizar y despues un argumento que indicara si la funcion es case sensitive o no (reconoce entre mayusculas y minusculas o no), el valor predeterminado es True para que no lo reconozca, despues iniciaremos a una cadena llamada t y por medio de join le pasaremos solamente los caracteres que sean alfanumericos (letras y numeros) por medio de isalnum, nos devuelve True si son de este tipo, una vez creada el texto con solo letras y numeros tenemos un condicional donde verifica si esta activada que no sea case sensitive y en caso de ser verdadero procede a convertir a esta variable en todas minusculas por medio de lower, lo siguiente sera un bucle donde trabajara solo con la mitad del texto que pasemos, luego chequearemos si la letra de la posicion es distinta a la de su posicion inversa, es decir la otra mitad, en caso de ser verdadero devolvemos un False y salimos de la funcion en caso de que no ocurra esta discrepancia procede a devolver un True porque es un palindromo.

Anuncios
Nota: Un palindromo es un palabra o expresión que es igual si se lee de izquierda a derecha que de derecha a izquierda
Anuncios

La siguiente funcion es para obtener solamente las palabras de una frase, para ello recibira un texto procedera a separarlas por medio de la funcion split y este lo almacenara en un set que sera lo devuelto, con las dos funciones explicadas vamos a proceder a implementar esta nueva clase y para ello iremos a nuestro interprete y ejecutaremos esta linea:

>>> from estatico import UtilCadena
Anuncios

Esta importara la clase generada anteriormente a nuestro interprete, ahora podemos probar las funciones,, probemos la primera con una frase:

>>> print(UtilCadena.es_palindromo("Yo dono rosas, oro no doy"))
True
>>>
Anuncios

En este caso podemos ver como nos devolvio un True porque la frase que se lee igual de izquierda a derecha y de derecha a izquierda, probemos ahora con otro idioma:

>>> print(UtilCadena.es_palindromo("In girum imus nocte et consumimur igni"))
True
>>>
Anuncios

Para este ejemplo utilizamos latin y como pueden ver la funcion se ejecuto perfectamente, por lo tanto esta funcion no se restringue al idioma sino que a los caracteres dentro de esta, pasemos a probar la otra funcion:

>>> print(UtilCadena.get_palabras_unicas(
...     "Amo los palindromos, de verdad los amo!!"))
{'los', 'palindromos,', 'verdad', 'de', 'Amo', 'amo!!'}
>>>
Anuncios

En este caso usamos la funcion con una frase con distintos de caracteres, si observan nos devolvio todas las palabras que componen la frase que le pasamos pero cual es la particularidad de todo esto? Tan simple que seguramente no lo vieron, en ningun momento tuvimos que crear una instancia para poder acceder a los metodos sino que lo hicimos directamente por medio de la clase, otra ventaja de trabajar de esta forma es que podemos acceder al mismo metodo desde cualquier punto del codigo.

Anuncios

En resumen, hoy hemos visto que es un metodo estatico, como se define, para que se usan, vimos un ejemplo donde lo pusimos en practica y pudimos observar su practicidad a la hora de trabajar, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50