Está en la página 1de 5

Curso Python POO

1. En python vamos a crear clases, instanciar objetos, a los objetos le vamos a agregar atributos y
métodos y las clases las vamos a organizar en paquetes y módulos.

2. Para el nombre de las clases se utiliza el formato CamelCase que significa que la primera letra de
cada palabra que describe el nombre de la clase inicia con mayúscula.

3. El nombre de la clases inicia por la palabra class NombreClase y dos puntos class NombreClase:

4. Manejo de módulos en un sistema de control de alumnos.

La declaración import es usada para importar módulos, clases o funciones desde otros módulos.

Los módulos son archivos .py

Creamos un módulo llamado database.py que va a tener la clase Database

Creamos los módulos alumnos.py, notas.py e informacion.py a los cuales podemos ingresar a sus clases
mediante la declaración import. Por ejemplo, el módulo alumnos puede importar clases desde el
módulo base de datos llamado basededatos.py

Ejemplo:

El módulo alumnos.py, el cual es el responsable de las consultas relacionadas con los alumnos. Esta
necesita instanciar la clase Database, de modo que se puedan ejecutar consultas de los alumnos en la
base de datos.

Declaraciones de import que podemos usar en el archivo alumnos.py

Import database
db = database.Database()
#hacer consultas en la base de datos

con el import database estamos importando todo el módulo database, con esto desde el módulo
alumnos tendremos acceso a todas las clases, métodos y funciones contenidos en el archivo database.py

from database import Database


db = Database()
#hacer consultas a la base de datos

con el from database import Database estamos importando solo la clase Database en el archivo
alumnos.py

from database import Database as DB


db = DB()
#hacer consultas a la base de datos
se puede usar la anterior sintaxis y funcionará de igual manera.

from database import Database , Tabla


db = database()
#hacer consultas a la base de datos

podemos importar más de una clase como from database import Database,Tabla

from database import *

#hacer consultas a la base de datos

podemos importar todas los objetos del módulo con from database import * (no recomendada)

Ayuda del Docsting

Para acceder a la ayuda del docstring y obtener la información de una clase como Database, este lo
podemos hacer con el comando help(database.Database).

Paquetes

Nos permiten organizar los módulos aplicando algun tipo de gerarquía de estos elementos (modulos)

los paquetes son directorios que se crean y que permiten almacenar módulos . En otras palabras, un
paquete es una colección de módulos que se encuentran en un mismo directorio.

Para crear un paquete se realizan dos operaciones:

1. decirle a python que el directorio es un paquete


2. guardar dentro de este directorio (el paquete) un archivo vacio con el nombre __init__.py

importar elementos desde los paquetes

1. Import absolutos.

Existen tres formas de importar


- Import escolar.alumnos.Alumno = escolar.alumnos.Alumno():

- from escolar.alumnos import Alumno

alumno = Alumno()

- from escolar import alumnos


alumno = alumnos.Alumno()

Importar directamente desde los paquetes: para realizar esto nos apoyamos en en el archivo
escolar/__init__.py , sobre el cual podemos definir variables y clases, las cuales quedarían accesibles
desde el propio paquete.

Esto lo realizamos modificando el archivo __init__.py asi:

form .database import db

luego de esto, podemos acceder a la clase db desde el archivo main.py o desde cualquier otro archivo,
registrando from escolar import db

2. imports relativos

#llamada a database desde alumnos


from .alumnos import Database

#llamada a database desde examenes


from ..database impor database

3. A veces podemos importar un objeto ya instanciado de una clase. Para esto dejamos el objeto
instanciado en el módulo origen.
Evitar que se ejecuten códigos en los módulos importados

Para asegurarnos que cualquier módulo en caso de ser importado no se ejecute alguna función, se debe
agregar a cada módulo el siguiente script. Esto debería ser una norma.

If __name__== “__main__”:
main()

así,

class ClaseUtil:
pass

def main():
util = ClaseUtil()
print(util)

if __name__==”__main__”:
main()
Acceso a datos (Encapsulamiento)

para definir los atributos o métodos privados en python, se inician los nombres de estos elementos con
dos lineas bajas así: __atributo, __metodo()

Al definir un método o un atributo como privado, si queremos acceder a estos elementos desde fuera de
la clase, con python debemos agregar una linea baja al nombre de la clase, así:
print(stringsecreto._StringSecreto__string_plano)

class StringSecreto:
### Un modo no totalmente seguro de almacenar un string secreto ###
def __init__(self, string_plano, frasePassword):
self.__string_plano = string_plano
self.__frasePassword = frasePassword
def decript(self, frasePassword):
if frasePassword == self.__frasePassword:
return self.__string_plano
else:
return 'Error, la clave no es correcta!'

stringsecreto = StringSecreto('Has descubierto la frase secreta "Eres un genio"', 'carlos1234')


print(stringsecreto.decript('carlos1o34'))

#Saltarnos el sistema de encriptación


print(stringsecreto._StringSecreto__string_plano)

Con esto, el desarrollador debe estar atento a que si quiere acceder a métodos o atributos privados, debe asegurarse de
usar la sintaxis _<NombreClase>

Para evitar esta compleja forma de manejar los métodos y clases privadas, se recomienda el uso de una sola línea al
inicio del nombre de estos elementos, asi:

class StringSecreto:
### Un modo no totalmente seguro de almacenar un string secreto ###
def __init__(self, string_plano, frasePassword):
self._string_plano = string_plano
self._frasePassword = frasePassword
def decript(self, frasePassword):
if frasePassword == self._frasePassword:
return self._string_plano
else:
return 'Error, la clave no es correcta!'

stringsecreto = StringSecreto('Has descubierto la frase secreta "Eres un genio"', 'carlos1234')


print(stringsecreto.decript('carlos1o34'))

También podría gustarte