Podemos pensar en las Clases como en plantillas para crear Objetos.

Las clases en Python se definen con la palabra clave class.

Por convención el nombre de las clases va en mayúsculas y el nombre de las instancias en minúscula.

self es siempre el primer parámetro de las funciones de las clases.

self en Python es el equivalente a this en JavaScript.

Para accceder a los atributos de una instancia de una clase utilizamos la sintaxis objeto.atributo.

El método __init__ es un método especial que Python utiliza para construir una instancia de la clase cuando creamos los objetos.

La sintaxis para crear objetos instancia de una clase es la siguiente:

objeto = Clase(), nombre objeto + = + nombre clase + parentesis () para argumentos.

En el siguiente ejemplo he creado la clase Film con los atributos name, director, year y genre para poder crear objetos instancia de de la clase Film y mostrar la información de varias películas por pantalla.

Para acceder a un atributo una instancia de la clase Film escibimos el nombre de la instancia + un punto . + el nombre del atributo: film2.name.

class Film:

    def __init__(self, name, director, year, genre):
        self.name = name
        self.director = director
        self.year = year
        self.genre = genre


film1 = Film('Noche en la Tierra', 'Jim Jarmusch', '1991', 'Comedia')
film2 = Film('Akira', 'Katsuhiro Ôtomo', '1988', 'Ciencia ficción')

print(film1.year) # Output: 1991

print(film2.year) # Output: 1988

Pintar por pantalla todos los atributos de un Objeto de Python

film1 y film2 son instancias de la clase Film cada una con sus propio atributos.

La sintaxis object.__dict__ retorna un dicccionario con todos los nombres y atributos de un objeto.

class Film:

    def __init__(self, name, director, year, genre):
        self.name = name
        self.director = director
        self.year = year
        self.genre = genre


film1 = Film('Noche en la Tierra', 'Jim Jarmusch', '1991', 'Comedia')
film2 = Film('Akira', 'Katsuhiro Ôtomo', '1988', 'Ciencia ficción')


print(film1.__dict__)

# Output:
'''{
  'name': 'Noche en la Tierra',
  'director': 'Jim Jarmusch',
  'year': '1991',
  'genre': 'Comedia'}
'''

print(film2.__dict__)

# Output: 
'''{
  'name': 'Akira',
  'director': 'Katsuhiro Ôtomo',
  'year': '1988',
  'genre': 'Ciencia ficción'}
'''

Si queremos obtener un diccionario limpio, sin llaves ni comillas, primero convertimos el objeto en un diccionario con __dict__ y después obtenemos los ítems del diccionario con un for loop y el método .items() de los diccionarios.

class Film:

    def __init__(self, name, director, year, genre):
        self.name = name
        self.director = director
        self.year = year
        self.genre = genre


film1 = Film('Noche en la Tierra', 'Jim Jarmusch', '1991', 'Comedia')
film2 = Film('Akira', 'Katsuhiro Ôtomo', '1988', 'Ciencia ficción')


def film_dict(film):
    x = film.__dict__

    for clave, valor in x.items():
        print(clave.capitalize(), ':', valor)


film_dict(film1)
# Output: 
'''
Name : Noche en la Tierra
Director : Jim Jarmusch
Year : 1991
Genre : Comedia
'''

film_dict(film2)
# Output: 
'''
Name : Akira
Director : Katsuhiro Ôtomo
Year : 1988
Genre : Ciencia ficción
'''

Posteado en Programación con : Python