• Classe: É um projeto ou um modelo para criar objetos. Ela define um conjunto de atributos (características) e métodos (comportamentos) que os objetos criados a partir dela terão. Pense em uma classe como a planta de uma casa.

    • Convenção de Nomes: Nomes de classes geralmente usam CamelCase (primeira letra de cada palavra em maiúscula).
    # Exemplo de uma classe simples
    class Carro:
        pass # 'pass' é uma operação nula, usada quando nenhum código é necessário.
    
    
  • Objeto (Instância): É uma ocorrência concreta de uma classe. É a "casa" construída a partir da planta. Cada objeto tem seus próprios valores para os atributos definidos pela classe, mas compartilha os mesmos métodos.

    # Criando objetos (instâncias) da classe Carro
    meu_carro = Carro()
    seu_carro = Carro()
    
    
  • Atributo: São as características ou propriedades de um objeto. Eles representam o estado do objeto.

    • Atributos de Classe: Pertencem à classe e são compartilhados por todas as instâncias.
    • Atributos de Instância: Pertencem a uma instância específica e seus valores são únicos para cada objeto.
    class Carro:
        # Atributo de Classe: comum a todos os carros
        rodas = 4
    
        def __init__(self, marca, modelo):
            # Atributos de Instância: específicos de cada carro
            self.marca = marca
            self.modelo = modelo
    
    meu_carro = Carro("Ford", "Focus")
    print(meu_carro.marca)  # Saída: Ford
    print(meu_carro.rodas)  # Saída: 4 (acessando atributo de classe pela instância)
    print(Carro.rodas)      # Saída: 4 (acessando atributo de classe pela classe)
    
    
  • Método: São funções definidas dentro de uma classe que representam os comportamentos que um objeto pode realizar. Métodos sempre recebem self como primeiro parâmetro (por convenção), que se refere à própria instância do objeto.

    class Carro:
        def __init__(self, marca, modelo):
            self.marca = marca
            self.modelo = modelo
            self.velocidade = 0
    
        def acelerar(self, incremento):
            self.velocidade += incremento
            print(f"{self.marca} {self.modelo} acelerou para {self.velocidade} km/h.")
    
        def frear(self, decremento):
            self.velocidade -= decremento
            if self.velocidade < 0:
                self.velocidade = 0
            print(f"{self.marca} {self.modelo} freou para {self.velocidade} km/h.")
    
    meu_carro = Carro("Chevrolet", "Onix")
    meu_carro.acelerar(50) # Saída: Chevrolet Onix acelerou para 50 km/h.
    meu_carro.frear(20)    # Saída: Chevrolet Onix freou para 30 km/h.