Curso
El enfoque orientado a objetos es especialmente útil cuando tu código implica interacciones complejas entre muchos objetos. En código real de producción, las clases pueden tener docenas de atributos y métodos con lógica complicada, pero la estructura subyacente es la misma que en la clase más simple.
Las clases son como un plano de los objetos: describen los posibles comportamientos y estados que puede tener cualquier objeto de un cierto tipo. Por ejemplo, si dices: "toda persona cliente tendrá un número de teléfono y un email, y podrá hacer y cancelar pedidos", ¡acabas de definir una clase! Así puedes hablar de los clientes de forma unificada. Luego, un objeto Customer concreto no es más que una realización de esa clase con un estado particular.

Cómo identificar clases en Python
En Python, todo es un objeto. Los números, las cadenas, los DataFrames e incluso las funciones son objetos. En concreto, todo con lo que trabajas en Python tiene una clase, un plano asociado que funciona por debajo. La existencia de estas interfaces unificadas es lo que permite usar, por ejemplo, cualquier DataFrame de la misma manera.
Puedes llamar a type() sobre cualquier objeto de Python para averiguar su clase. Por ejemplo, la clase de un array de numpy se llama en realidad ndarray (de n-dimensional array).
import numpy as np
a = np.array([1,2,3,4])
print(type(a))
numpy.ndarray
Las clases incorporan información sobre el estado y el comportamiento. En Python, la información de estado está contenida en los atributos y la de comportamiento en los métodos.
Atributos y métodos
Toma un array de numpy: ¡ya has estado usando algunos de sus métodos y atributos!
Por ejemplo, todo array de numpy tiene un atributo "shape" al que puedes acceder indicando el nombre del array seguido de un punto y shape.
Estado <--> atributos
import numpy as np
a = np.array([1,2,3,4])
# atributo shape
a.shape
(4,)
También tiene métodos como max y reshape, a los que se accede igualmente con el punto.
Comportamiento <--> métodos
import numpy as np
a = np.array([1,2,3,4])
# método reshape
a.reshape(2,2)
array([[1, 2],
[3, 4]])
Crea tu primera clase
En este ejemplo, crearás una clase vacía Employee. Después crearás un objeto emp de la clase Employee llamando a Employee().
Prueba a imprimir el atributo .name del objeto emp en la consola. ¿Qué ocurre?
# Crea una clase vacía Employee
class Employee:
pass
# Crea un objeto emp de la clase Employee
emp = Employee()
Si quieres aprender más sobre programación orientada a objetos en Python, echa un vistazo a este vídeo de nuestro curso Object-Oriented Programming in Python.
Este contenido está extraído del curso Object-Oriented Programming in Python de DataCamp, impartido por Aliaksandra Yarosh.
Échale un ojo también al tutorial de programación orientada a objetos (OOP) en Python de DataCamp.
