instancia (instance)
Como você pode ver na wikipedia instancia é um objeto cujo comportamento e estado são definidos pela classe.
O que isso significa?
Significa que quando chamamos uma classe nós temos uma instancia dela.
Quando temos uma instancia de uma classe nós chamamos essa instancia de um objeto.
No caso do nosso exemplo, pra chamar a classe Veiculo
, basta fazer:
meu_veiculo = Veiculo('Honda', 'Ridgeline', 'Truck')
metodo (method)
Como classes representam objetos do mundo real, esses objetos tem comportamentos, seus comportamentos são contidos em funções, e essas funções são chamadas de metodos.
Ou seja, métodos nada mais são que funções que estão dentro de uma classe, por exemplo:
def dirige(self):
print(f'O {self.modelo} está sendo dirigido.')
atributo (attribute)
Os atributos assim como o próprio nome ja deixa a entender são as coisas que definem um objeto. Um veiculo tem uma marca, um modelo, um tipo, etc.
Então se eu quero que meu veiculo tenha tudo isso eu tenho que definir com os atributos.
Um exemplo é a quantidade de gasolina do nosso veiculo, que fizemos começar como 0
.
self.quantidade_de_gasolina = 0
__init__
nosso inicializador (initializer)
Muitas vezes nós temos que ter o objeto já com alguns atributos definidos, mas nós não queremos um valor padrão e sim que a pessoa que vá usar a classe defina esses atributos, pra isso nós temos o metodo __init__
onde cada parametro dele é obrigatório de ser passado ao criar o objeto.
class Veiculo:
# isso obriga a pessoa que criar o veiculo a dizer qual a marca, o modelo e o tipo
def __init__(self, marca, modelo, tipo):
# aqui atribuimos o que escrevemos na instancia a um atributo do nosso veiculo
self.marca = marca
self.modelo = modelo
self.tipo = tipo
o parâmetro self
O parâmetro self é uma referência à instância atual da classe e é usado para acessar variáveis (atributos) que pertencem à classe.
Por isso temos sempre que passar o self
como primeiro parâmetro de um metodo. O python não lê esse primeiro parâmetro como se fosse um parâmetro que atribuimos/queremos atribuir algo a ele, então não precisa ter medo da marca
(no nosso exemplo) que você passar ao instanciar a classe ser atribuida ao self
ou coisa do tipo.
importando só uma parte do código
Se você quiser importar por exemplo apenas a classe Veiculo
de dentro do exemplo
basta fazer from meus_exemplos.exemplo import Veiculo
outras dicas e exemplos:
programação orientada a objeto
Recomendo que leia esse pequeno livro gratuito e open source pra entender melhor como funciona.
exemplos usados em algumas explicações:
Classes
Metodos e Atributos
Espero que tenha dado pra entender tudo, qualquer resquício de dúvida sinta-se livre pra perguntar :)