Curso
Quando seu código envolve interações complexas entre vários objetos, uma abordagem orientada a objetos é de grande utilidade. No código de produção real, as classes podem ter dezenas de atributos e métodos com lógica complicada, mas a estrutura subjacente é a mesma da classe mais simples.
As classes são como um modelo para os objetos e descrevem os possíveis comportamentos e estados que cada objeto de um determinado tipo pode ter. Por exemplo, se você disser que "todo cliente terá um número de telefone e um e-mail e poderá fazer e cancelar pedidos", você acabou de definir uma classe! Dessa forma, você pode falar sobre os clientes de uma maneira unificada. Então, um objeto Customer específico é apenas uma representação dessa classe com um valor de estado específico.

Como encontrar classes Python
Em Python, tudo é objeto. Números, cadeias de caracteres (strings), DataFrames, e até mesmo funções são objetos. Especificamente, qualquer coisa que você usa no Python tem uma classe, um modelo associado por trás. A existência dessas interfaces unificadas é a razão pela qual você pode usar, por exemplo, qualquer DataFrame da mesma forma.
Você pode chamar type() em qualquer objeto Python para descobrir sua classe. Por exemplo, a classe de uma matriz numpy é, na verdade, chamada ndarray (para matriz n-dimensional).
import numpy as np
a = np.array([1,2,3,4])
print(type(a))
numpy.ndarray
As classes incorporam informações sobre o estado e o comportamento. No Python, as informações de estado estão contidas nos atributos e as informações de comportamento, nos métodos.
Atributos e métodos
Pegue uma matriz numpy: você já usou alguns de seus métodos e atributos.
Por exemplo, toda matriz numpy tem um atributo "shape" que você pode acessar especificando o nome da matriz seguido de um ponto e a palavra "shape".
Estado <--> Atributos
import numpy as np
a = np.array([1,2,3,4])
# shape attribute
a.shape
(4,)
Ela também tem métodos como max e reshape, que também podem ser acessados através de um ponto.
Comportamento <--> Métodos
import numpy as np
a = np.array([1,2,3,4])
# reshape method
a.reshape(2,2)
array([[1, 2],
[3, 4]])
Crie sua primeira classe
Neste exemplo, você vai criar uma classe Employee vazia. Em seguida, você vai criar um objeto emp da classe Employee chamando Employee().
Tente imprimir o atributo .name do objeto emp no console. O que acontece?
# Create an empty class Employee
class Employee:
pass
# Create an object emp of class Employee
emp = Employee()
Para saber mais sobre programação orientada a objetos em Python, assista a este vídeo de nosso curso, Programação orientada a objetos em Python.
Este conteúdo foi extraído do curso Programação orientada a objetos em Python do DataCamp, ministrado por Aliaksandra Yarosh.
Dê uma olhada no Tutorial de programação orientada a objetos (OOP) em Python do DataCamp.
