Python POO Flashcards
O que é o __init__?
É o método construtor que inicializa os atributos do objeto.
Como chamamos a ação de chamar a classe?
Instanciação.
Explique brevemente a diferença entre Instance, Class e Static Methods
Instance: métodos que usam as variáveis de instância ao chamar self como parâmetro.
Class: têm cls como parâmetro e podem ser úteis em operações envolvendo a classe como um todo.
Static: não estão diretamente relacionados com a classe, mas se encontram dentro dela por organização.
Explique a diferença entre Instance e Class variables
Instance: são únicos para cada instância da classe. São declarados no construtor e podem ser acessadas e modificadas usando a palavra-chave self.
Class: pertencem à classe em si e são compartilhadas entre todas as suas instâncias. São declaradas dentro da classe e fora dos métodos.
Explique o conceito de herança
É a construção de novas classes a partir de classes existentes. Uma subclasse (classe derivada) herda de uma superclasse (classe base)
Colocamos o nome da superclasse dentro do parêntesis após o nome da subclasse.
Explique a função super()
É útil quando queremos estender o comportamento da classe ao chamarmos um dos métodos da superclasse.
Explique Polimorfismo e cite suas 2 principais formas
Permite que objetos de diferentes classes sejam tratados como objetos de uma superclasse comum.
Permite que uma mesma interface (nome de método) seja usada para representar diferentes tipos de objetos.
Os 2 tipos são: compile-time (static) e runtime (dynamic)
Explique compile-time (static) polymorphism
É quando chamamos um método com número diferente de argumentos. Conseguimos isso com valores default ou listas de argumentos de comprimento de variável.
Explique runtime (dynamic) polymorphism
Também chamado de method overriding, permite que a subclasse crie uma implementação específica de um método da superclasse. Ou seja, a implementação é escolhida no tempo de execução a depender da classe do objeto.
Explique os 3 tipos de access modifiers
Public: em python por default todos os métodos são públicos e podem ser acessados de qualquer lugar.
Private: é possível somente sinalizar com um _ antes do nome. O método não deve ser utilizado fora da classe.
Protected: sinalizados com __ antes do nome. São considerados não públicos.
Obs: getters e setters não fazem sentido no contexto de python.
Explique classe abstrata
É uma classe que não pode ser instanciada e serve de blueprint para outras classes. Pode conter métodos abstratos, que não possuem implementação.
Explique interface
É um contrato que especifica um conjunto de métodos que uma classe precisa implementar.
Ao contrário de classes abstratas, interfaces não fornecem implementação de métodos, só declaram assinaturas de métodos.
Em python o conceito não faz tanto sentido por limitações da linguagem e podemos criar algo parecido com uma interface ao criar uma classe que contenha somente métodos abstratos.
Explique herança múltipla
Permite que uma subclasse herde atributos e classes de mais de uma superclasse.
Explique Mixins
É uma forma de herança múltipla. Permite que você adicione funcionalidades a uma classe ao criar classes separadas que implementam comportamentos específicos e combine essas classes em uma.
A classe combinada permanece clean e é fácil adicionar comportamentos caso necessário.
Explique Compositions
Criamos um objeto complexo ao combinar objetos simples. Ao invés de usar herança, criamos instâncias de outras classes como atributos de classe, o que permite reutilização de funcionalidade enquanto torna o código mais flexível e separa melhor os problemas.