Skip to content

Instantly share code, notes, and snippets.

@macagua
Last active December 1, 2018 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save macagua/c3b8141f5eaf44b891d536861d42bf7f to your computer and use it in GitHub Desktop.
Save macagua/c3b8141f5eaf44b891d536861d42bf7f to your computer and use it in GitHub Desktop.
Uso de Clases en Python 3.5.x

Clases en Python 3

Este es un ejemplo de Programación Orientado a Objetos usando la Herencia simple de Clase en Python 3.5.x.

Para crear objetos desde la clase Persona, entonces ejecute el siguiente comando:

python clases.py persona

Para crear objetos desde la clase Supervisor, entonces ejecute el siguiente comando:

python clases.py supervisor

# -*- coding: utf8 -*-
"""
Ejemplo de Programación Orientado a Objetos usando la
Herencia simple de Clase en Python.
"""
import sys
class Persona(object):
"""Clase que representa una Persona"""
def __init__(self, cedula, nombre, apellido, sexo):
"""Constructor de clase Persona"""
self.cedula = cedula
self.nombre = nombre
self.apellido = apellido
self.sexo = sexo
def __str__(self):
"""Devuelve una cadena representativa al Persona"""
return "%s: %s, %s %s, %s." % (
self.__doc__[25:34], str(self.cedula), self.nombre,
self.apellido, self.getGenero(self.sexo))
def hablar(self, mensaje):
"""Mostrar mensaje de saludo de Persona"""
return mensaje
def getGenero(self, sexo):
"""Mostrar el genero de la Persona"""
genero = ('Masculino','Femenino')
if sexo == "M":
return genero[0]
elif sexo == "F":
return genero[1]
else:
return "Desconocido"
class Supervisor(Persona):
"""Clase que representa a un Supervisor"""
def __init__(self, cedula, nombre, apellido, sexo, rol):
"""Constructor de clase Supervisor"""
# Invoca al constructor de clase Persona
Persona.__init__(self, cedula, nombre, apellido, sexo)
# Nuevos atributos
self.rol = rol
self.tareas = ['10','11','12','13']
def __str__(self):
"""Devuelve una cadena representativa al Supervisor"""
return "%s: %s %s, rol: '%s', sus tareas: %s." % (
self.__doc__[26:37], self.nombre, self.apellido,
self.rol, self.consulta_tareas())
def consulta_tareas(self):
"""Mostrar las tareas del Supervisor"""
return ', '.join(self.tareas)
def poblar_persona():
"""Función que crea objetos desde la clase Persona"""
# Dos instancias de Objeto Persona
persona1 = Persona("V-13458796", "Leonardo", "Caballero", "M")
persona2 = Persona("V-23569874", "Ana", "Poleo", "F")
print(persona1.__doc__[25:34])
print(len(persona1.__doc__[25:34]) * "=")
print("\n" + str(persona1) + "\n")
print("- Cedula de identidad: {0}.".format(persona1.cedula))
print("- Nombre completo: {0} {1}.".format(persona1.nombre,
persona1.apellido))
print("- Genero: {0}.".format(persona1.getGenero(persona1.sexo)))
print("- {0} {1} dijo: {2}".format(persona1.nombre,
persona1.apellido, persona1.hablar("Hola Ana :-*")))
print(persona1.hablar("\nHola, Soy una Persona") + \
", me llamo '"+ persona1.nombre +" "+ persona1.apellido + \
"', con cédula '"+ persona1.cedula +"'.")
print("\nOtra " + persona1.__doc__[25:34])
print((len(persona1.__doc__[25:34])+5) * "-")
print("\n" + str(persona2) + "\n")
print("- Cedula de identidad: {0}.".format(persona2.cedula))
print("- Nombre completo: {0} {1}.".format(persona2.nombre,
persona2.apellido))
print("- Genero: {0}.".format(
persona2.getGenero(persona2.__getattribute__('sexo'))))
print("- {0} {1} dijo: {2}".format(persona2.nombre,
persona2.apellido, persona2.hablar("Hola Leonardo ^_^")))
print(persona2.hablar("\nHola, Soy otra Persona") + \
", me llamo '"+ persona2.__getattribute__('nombre') +" "+ \
persona2.__getattribute__('apellido') +"', con cédula '"+ \
persona2.__getattribute__('cedula') +"'.")
def poblar_supervisor():
"""Función que crea objetos desde la clase Supervisor"""
# Una instancia de Objeto Supervisor
supervisor1 = Supervisor(
"V-16987456", "Pedro", "Pérez", "No se", "El chivo")
print("\n" + supervisor1.__doc__[26:37])
print(len(supervisor1.__doc__[26:37]) * "=")
print("\n" + str(supervisor1) + "\n")
# Atributo(s) y Método(s) heredado de la clase Persona
print("- Cedula de identidad: {0}.".format(supervisor1.cedula))
print("- Nombre completo: {0} {1}.".format(
supervisor1.nombre, supervisor1.apellido))
print("- Genero: {0}.".format(
supervisor1.getGenero(supervisor1.sexo)))
print("- {0} {1} dijo: {2}".format(
supervisor1.nombre, supervisor1.apellido,
supervisor1.hablar("A trabajar Leonardo!!!".upper())))
# Atributo(s) y Método(s) heredado de la clase Supervisor
print("- Rol: {0}.".format(supervisor1.rol))
print("- N. Tareas: {0}.".format(supervisor1.consulta_tareas()))
# Mostrar los atributos y métodos propios de la clase Supervisor
# y los heredados de la clase Persona
print("""\nHola, Soy el {0} {1} {2}, mi cédula es '{3}',
mi genero '{4}', con el rol '{5}' y mis tareas
asignadas '{6}'.""".format(
supervisor1.__doc__[26:37].lower(),
supervisor1.nombre, supervisor1.apellido, supervisor1.cedula,
supervisor1.getGenero(supervisor1.sexo), supervisor1.rol,
supervisor1.consulta_tareas()))
if __name__ == '__main__':
"""Inicia el programa Python"""
if len(sys.argv) == 2:
if sys.argv[1] == "persona":
poblar_persona()
elif sys.argv[1] == "supervisor":
poblar_supervisor()
else:
print("ERROR: Introdujo cero (0) o más de dos (2) argumentos")
print("SOLUCIÓN: Introduce los argumentos correctamente")
print("Ejemplo: python clases.py persona")
print("Ejemplo: python clases.py supervisor")
elif __name__ == "clases":
initialize()
else:
print(
"Este programa esta mal configurado, debes llamar a su modulo.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment