PYTHON - DEFINICION BASICA DE CLASES

Puedes ver todo el contenido de este vídeo GRATIS, simplemente registrandote

En esta sesión introducimos la definición de Clases en Python, desde sus aspectos más fundamentales, y cómo utilizar constructores, atributos y métodos.

Cargando video...

NOTA: ¡Este curso se encuentra disponible, completo y 100% gratis para ti!. Solo es necesario registrarse para poder disfrutarlo sin coste.

Descripción del Vídeo

Para definir clases propias en Python, utilizamos class seguida del nombre de la clase. La definición de dicha clase se coloca en un bloque indentado.

Las clases en Python pueden tener un método constructor, que se invoca al crear un objeto de dicha clase. El constructor tiene el nombre especial __init__.

El método __str__  se utiliza para dar una representación sencilla y legible en texto del objeto

Una vez realizada la definición de una clase, podemos instanciar nuevos objetos en nuestro programa. Para que esta definición sea reutilizable, en Python se acostumbra separar la definición genérica de clases, funciones y estructuras, ya sea en un archivo .py separado, o colocando el código ejecutable dentro de un bloque con la condición:
definiciones-de-clases-funciones
if __name__ == "__main__":
   bloque-ejecutable
Mostrar una mínima definición de clase en el intérprete de Python:

>>> class Personaje:
...     pass
...  
>>> type(Personaje)

>>> locals()
{'__builtins__': , 'Personaje': , '__name__': '__main__', '__loader__': , '__package__': None, '__doc__':
None, '__spec__': None}
>>> homero = Personaje()
>>> type(homero)

>>> homero.nombre = 'Homero J.'
>>> homero.apellido = 'Simpson'
>>> homero
<__main__.Personaje object at 0x7f556bafeba8>
>>> homero.__dict__
{'nombre': 'Homero J.', 'apellido': 'Simpson'}
>>> homero.nombre
'Homero J.'
>>> homero.apellido
'Simpson'
>>> homero.color
Traceback (most recent call last):
 File "", line 1, in 
AttributeError: 'Personaje' object has no attribute 'color'
>>> getattr(homero,'color')
Traceback (most recent call last):
 File "", line 1, in 
AttributeError: 'Personaje' object has no attribute 'color'
>>> getattr(homero,'color','amarillo')
'amarillo'
>>> getattr(homero,'apellido')
'Simpson'

Luego, ilustrar conceptos utilizando definición de clase en programa.
Código disponible en:
https://github.com/networkfaculty/Fundamentos-Python/blob/master/15-ejemplo-clase-v1.py

#!/usr/bin/env python

"""
Ejemplo de definición básica de clase, representando personajes de una popular
serie animada
"""

class Personaje:
    '''Personajes de una serie animada'''

    __version__='0.1'

    def __init__(self, nombre, apellido='Simpson', color='Amarillo'):
        '''
        En esta definición sencilla, se pueden suministrar tres parámetros al constructor, de
        los cuales sólo el nombre es requerido, ya que se proveen valores predeterminados
        para los demás atributos
        '''
        self.nombre = nombre
        self.apellido = apellido
        self.color = color

    def __str__(self):
        '''Representación en cadena del personaje, en este caso, su nombre completo'''
        return ' '.join([self.nombre,self.apellido])

    def hablar(self, mensaje):
        '''Mostrar un diálogo atribuido al personaje'''
        print(self.nombre,'dice:\t', mensaje)

    def saludar(self):
        '''Un diálogo estándar del personaje'''
        self.hablar('Hola, soy '+str(self)+' y soy de color '+self.color)

if __name__ == "__main__":
    p1 = Personaje('Homero')
    print('Personaje 1:', p1)
    print(type(p1))
    print(repr(p1))
    p1.saludar()

    p2 = Personaje(color='Marrón',nombre='Apu',apellido='Nahasapeemapetilon')
    p2.hablar('Hola, Homero. ¿Dos cajas de donas, como siempre?')

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.