Publicidad

Clase De Python 4 [Parte 2] por Rock Lee

Publicado por Rock Lee, 14 Agosto de 2014, 11:41

Tema anterior - Siguiente tema

0 Usuarios y 2 Visitantes están viendo este tema.

Rock Lee

Buenas chicos/as ya han pasado unos días desde que publique la primera parte por eso vamos por la 2da parte y esta vez trataremos el tema de Programación Orientada a Objetos con Python!


POO en Python

Python está completamente preparado para soportar la programación orientado a objetos, cuando se utiliza la programación orientada a objetos se puede:

 Definir nuevas clases.
 Utilizar mecanismos para definir relaciones de herencia entre clases.
 Instanciar las clases ya definidas en el sistema o las que haya definido el desarrollador.


Clases en Python

Una clase de Python empieza con la palabra reservada class, seguida de su nombre y finalizando con : . Por convención los nombres de clases deben comenzar en mayúscula y todo lo que va dentro de una clase se escribe con sangría [igual que la funciones, if, bucle for, etc.]. La primer sentencia que no esté con sangría, no pertenece a la clase, bien siguiendo la linea del  ejemplo anterior aplicaremos una Clase Ascensor.

Código: Python
class Ascensor:        #Nombre de la Clase#
    def _init_(self):
        self._pisoActual=0

    def subir(self):
        self._pisoActual=self._pisoActual+1        #Cuerpo de la Clase Ascensor#

    def bajar(self):
        self._pisoActual=self._pisoActual-1

    def getPisoActual(self):
        return self._pisoActual

def volver(piso):
    return piso-1        #Código no perteneciente a la Clase Ascensor#
print volver(21)



Instancias en Python

Para crear un objeto o instanciarlo a partir de una clase se utiliza la notación de funciones,o sea se
escribe el nombre de la clase seguido por dos paréntesis, uno de apertura y otro de cierra:

Código: Python
ascensor1=Ascensor()

ascensor2=Ascensor()    #Creación de tres instancias de la clase Ascensor#

ascensor3=Ascensor()


Self

La palabra reservada self sirve para referirse al objeto actual, es utilizada dentro del propio objeto para señalarse a si mismo. En todos los métodos de una clase el primer parámetro es siempre self. Esta referencia a si mismo es necesaria para poder acceder a los
atributos y métodos del objeto diferenciando, por ejemplo, una variable local, de una de instancia; las cuales comparten el mismo nombre.

Código: Python
class Ascensor:

    def _init_(self):
        _pisoActual=0
        self._pisoActual=_pisoActual        #Sirve para eliminar la ambigüedad. Nos permite especificar a que __pisoActual estoy haciendo referencia, la variable de instancia o la variable local#



Atributos en Python

Los atributos o variables de instancia son los contenedores del estado de un objeto. Estos se utilizan para almacenar los datos que deben manejarse en un objeto. Para asignar o accesar la información que se almacena en ellos se utiliza la notación de punto.

Código: Python
class Ascensor:
    def _init_(self):
        self._pisoActual=0

    def subir(self):        #Referencia a la instancia actual es decir el self de la siguiente linea ademas a continuacion se encuentra notación de punto#
        self._pisoActual=self._pisoActual+1        #Atributo que almacena el piso actual en el cual se encuentre el ascensor#

    def bajar(self):
        self._pisoActual=self._pisoActual-1

    def getPisoActual(self):
        return self._pisoActual


Declaración de Métodos
Los métodos en Python son muy similares a las funciones, las similitudes más significativas son:

– La definicion de los metodos: def nombreMetodo(parametros): 
– El cuerpo debe estar indentado.
– Pueden o no retornar un resultado.

Pero se diferencian de las funciones en que:
– Los métodos se encuentran dentro de una definición de clase.
– El primer parámetro siempre debe ser self. Aunque no se use.

Invocación de Métodos
La forma en que los métodos son invocados difiere de la forma de invocar a las funciones. La notación de punto se utiliza para invocar los métodos y al invocar un método el parámetro self se omite ya que esta implícito en el objeto.



Constructores
Los constructores son métodos especiales mediante los cuales los programadores pueden inicializar una instancia, los mismos se ejecutan justo después de instanciar un objeto. También los constructores en Python se definen codificando un método especial llamado __init__.
En el __init__ se inicializa las variables de instancia del objeto, dejandolas disponibles para comenzar a operar con ellas a través de los métodos. Un ejemplo de la utilización de un constructor para inicializar una variable de instancia en los objetos ascensor...



Métodos Especiales
Existen métodos con significados especiales aparte del __init__ y que cuyos nombres siempre comienzan y terminan con dos guiones bajos. A continuación se listan dos especialmente útiles:

__str__(self): Método para crear una cadena de texto que represente al objeto. Se utiliza cuando usamos print para mostrar al objeto o cuando usamos la función str(obj) para crear una cadena a partir del objeto

__cmp__(self, otro): Método llamado cuando se utilizan los operadores de comparación para comprobar si el objeto es menor, mayor o igual al objeto pasado como parámetro. Devuelve un número negativo si el objeto es menor, cero si son iguales, y un número positivo si el objeto es mayor. Si este método no está definido y se intenta comparar el objeto mediante los operadores <, <=, > o >= se lanzará una excepción. Si se utilizan los operadores == o != para comprobar si dos objetos son iguales, se comprueba si son el mismo objeto (si tienen el mismo id).


Encapsulamiento y Ocultamiento de información

Encapsulamiento
Es un mecanismo que consiste en construir una "cápsula" que funciona como una barrera, alrededor de la información y de las operaciones de los objetos. Establece la siguiente regla: "todas estas cosas deben permanecer juntas". La programación estructurada no provee mecanismos para encapsular.



Ocultamiento de información
Es la capacidad de ocultar los detalles internos del comportamiento de un objeto y exponer sólo los que son
necesarios para el resto del sistema. Del objeto, se conoce solo la interface pública, compuesta por los métodos y datos que podrán ser requeridos por otros objetos del sistema, el resto forma parte de la representación privada de los objetos.
En Python el ocultamiento de un atributo o método viene determinado por su nombre: si el nombre comienza con dos guiones bajos (y no termina también con dos guiones bajos) se trata de un atributo o método privado, en caso contrario es público.



RESUMEN:
Todo es un objeto: un  programa orientado a objetos, esta organizado como una comunidad de objetos interactuando. La computación se lleva a cabo por objetos que interactúan entre si enviándose mensajes.

Todos los objetos son instancias de una clase. El método invocado por un objeto en respuesta a un mensaje es determinado por la clase del objeto receptor.Una clase es un molde con una estructura y comportamiento asociado, que tendrán todos los objetos que con ella se creen. Todos los objetos que con ella se crean, tendrán los mismos datos (con diferentes valores o no) y podrán ejecutar los mismos métodos.

El encapsulamiento y el ocultamiento de información se complementan, para aislar las diferentes partes de un sistema, permitiendo que el código sea modificado y extendido sin producir efectos colaterales.



Espero todo este viento en popa ;D por eso llegamos hasta aquí por ahora :-X ahora les dejo un poco de tarea ja ja ja solamente son unas preguntas: ¿Haz entendido hasta acá perfectamente todo? ¿Te gustaría siguiera con estas clases? ¿Que Clases te gustaría se vieran?

Recordar: Ante cualquier duda o sugerencia sera muy bien recibida simplemente deja un comentario ;) ademas es material que tengo y por tal motivo voy observando que cosas pueden entrar o cuales no es necesario incluir. También puede que se encuentre algún error o cosas no tan claras por eso pido disculpas!


...Un Saludo Para Todos!...

<<< Continuación >>> Clase De Python 5.

Rafaelpa

Con tu permiso Rock. Para ver la potencia de python y entender como se puede usar. He modificado ligeramente el código del ascensor que me parece un buen ejemplo con la intención de como usar un artilúgio

#!/usr/bin/python
# -*- coding: utf-8 -*-

# ARTILUGIO
class Ascensor:
    def __init__(self,pisoActual):
        self.pisoActual=pisoActual

    def subir(self):                        
        self.pisoActual=self.pisoActual+1 

    def bajar(self):
        self.pisoActual=self.pisoActual-1

    def dimePisoActual(self):
        return self.pisoActual
    

# --- MANUAL DE COMO USAR EL ASCENSOR? (Artilugio Class)
# LLEGAMOS AL EDIFICIO DESDE LA CALLE
pisoActual=0                                   # que bien está aquí
A=Ascensor(pisoActual)                         # Construimos el objeto Ascensor en nuestra mente 
dondeEstamos=(A.dimePisoActual())              # ... Abrimos la puerta y entramos
print "ESTE ES EL PISO:",dondeEstamos          # ESTE ES EL RESULTADO ACTUAL !!!

# SUBIENDO AL PRIMER PISO
A=Ascensor(dondeEstamos)                       # si, para evitar lios conceptuales python permite el cambio del nombre de la variable (pisoActual X dondeEstamos)
A.subir()                                      # Ejecutamos solo objeto funcion (def) de todo el objeto artilúgio (Class)... PORQUE VIVIMOS EN EL PRIMERO!!
dondeEstamos=(A.dimePisoActual())              # Actualizamos nuevamente la variable del piso donde nos encontramos
print "ESTE ES EL PISO:",str(dondeEstamos)+"º" # ESTE ES EL RESULTADO ACTUAL !!!
print "    ------- "

# COMO BAJAR NUEVAMENTE A LA CALLE? (NO POR LAS ESCALERAS)
print "  ... DE EJERCICIO. Seguro podrán hacerlo"
print "    ------- "

   # EJERCICIO 2:
      Hemos subido un piso porque Subir es self.pisoActual+1
      Y si viviesemos en cualquier otro piso el piso? Ejem el 15, el +1 deberia canviarse por +n 
      Por tanto deberiamos pasar al __init__ del artilugio Ascensor otra variable (otro argumento)
        con el numero de pisos que queremos subir o bajar
      ... y modificar las funciones subir y bajar?
       
    # EJERCICIO 3:
      Simplemente podemos decirle al artilugio a que piso queremos ir
      ... que sea Python que descubra cuantos n de pisos son
      ... a partir del piso donde se encuentre el ascensor  (piss n=pisodondevamos-pisodondeestamos)
      ... que sea Python que decida si sube o baja pisos
    ;-)
En los 90 nos decian que Internet conectaría al agricultor con el consumidor. Que cualquier persona podria competir con una multinacional mediante una página web simple. La información libre y accesible implicaría que Intermediarios y paises se diluirian. Por primera vez un planeta con las mismas oportunidades.

2023: Internet son 10 aplicaciones privativas y plataformas globales de poder inimaginables en la historia. Estados y fronteras privativas. Informacion intrusiva, repetitiva y escasa. Hipervigilados. La propiedad es intelectual, nuestra la mente, y las oportunidades, es de otros

Rock Lee

Bueno teniendo en cuenta esto lo publique en 2014 puede no envejeciera del todo bien, casi 10 años desde que lo publique... paso mucho en estos años :P


Saludos Familia!

Rafaelpa

10 años ... y python es plenamentre vigente. No? Cómo subirías hoy en ascensor?
En los 90 nos decian que Internet conectaría al agricultor con el consumidor. Que cualquier persona podria competir con una multinacional mediante una página web simple. La información libre y accesible implicaría que Intermediarios y paises se diluirian. Por primera vez un planeta con las mismas oportunidades.

2023: Internet son 10 aplicaciones privativas y plataformas globales de poder inimaginables en la historia. Estados y fronteras privativas. Informacion intrusiva, repetitiva y escasa. Hipervigilados. La propiedad es intelectual, nuestra la mente, y las oportunidades, es de otros

Rock Lee

Puede ser aunque muchos no lo toman como algo se use, van por nuevos tipos de lenguajes medios raros, yo soy del corte clásico. Ir a lo seguro que va a funcionar en casi todo aunque digan que no, muchas cosas usa python como iniciador por su simpleza ademas de funcionar en casi cualquier entorno. Sin embargo, hoy en día unos chicos hacen un curso y piensan pueden cambiar el mundo... creo la falta de ese análisis lógico hace que Chatgtp o cualquier otra IA tome el control (esto no va a terminar bien, ya sabemos cuando jugamos a ser dios que sucede).


Saludos Familia!

Rafaelpa

Bueno Chatgpt está hecho en python.

Conozco a quien usa el chatgtp y está encantado. Por lo que he visto supongo dará si te entretienes códigos escritos en: python,C+,php,java,javascript,css,html5...etc. que facilitan la vida (y atontan un poco, como todo lo que facilita la vida)

Lo que es innegable es que desde python se puede construir código para todos esos otros lenguajes. Pero desde esos lenguajes no puedes construir objetos para python por el momento. Simplemente por eso es el mejor lenguaje a inicios del 2023. El más usado sin discusión en ciencia, en medicina, en inteligencia artificial, en robótica, como esta hecho Spotify o Netflix... y por eso es el claro ganador de los lenguajes actuales.

Solo porque incorporar al código cualquier modulo ocurrencia propia o de otros es abunbdante y extremadamente fácil, como en el juego de la serpiente, originario del nombre del lenguaje.

En estos tiempos de dictadura tecnológica la verdad es que se agradece un estandar libre.

Como ejemplo, con un simple import os; os.system(comando) Por ejem os.system("ls -al") / os.system("DIR") que viene de serie ya estás trabajando en el sistema operativo que se tenga. Se puede interaccionar con los sistemas operativos Linux, Windows, (Android, Ios - Que son Linux apro-piativos)

Las aplicaciones o se hacen en java o python mayoritariamente.
Para el lado del servidor se instala lamp php o django python y html5 como cliente. Como framewoords de trabajo.

A mi me parecería lo normal que todos los lenguajes principales en algún momento converjan en python sin tanto corchete ni fallos junto a html... un mundo libre y unido... pero como decía no siempre ganan los buenos.

Python-python-ra-ra-ra!!! ;)

PS. Como estos últimos comentarios no son extrictamente del curso, tal vez sería más adecuado pasarlos al hilo de Principe_Azul Lenguaje Python
En los 90 nos decian que Internet conectaría al agricultor con el consumidor. Que cualquier persona podria competir con una multinacional mediante una página web simple. La información libre y accesible implicaría que Intermediarios y paises se diluirian. Por primera vez un planeta con las mismas oportunidades.

2023: Internet son 10 aplicaciones privativas y plataformas globales de poder inimaginables en la historia. Estados y fronteras privativas. Informacion intrusiva, repetitiva y escasa. Hipervigilados. La propiedad es intelectual, nuestra la mente, y las oportunidades, es de otros

Rock Lee

Creo es un buen futuro si es bien usado pero como siempre lo usan de mala manera, internet fue planeado de buena manera pero también es usado para cosas malas. Incluso trataron de hacer otros para remplazarlo pero no lograron llegar a tal punto, supongo ciertos lenguajes por su sencillez y usabilidad no son fáciles de matar.

No creo va complementado sobre el tema original, porque es otra perspectiva de mi vieja explicación aparte si desean aprender necesitan leer mucho a fuerza mayor.


Saludos Familia!

lucas moy

#7
Hola! Dejo este curso de Python que puede ser de gran ayuda para principiantes:


Además dejo estos ejercicios para poner en practica:

Y este otro un poco mas divertido que permite ejercitar.

Espero que les sirva.

Abrazos:))

Temas Similares (5)