Programação orientada a objetos em Python
Alex Yarosh
Content Quality Analyst @ DataCamp
self como o primeiro argumentoself.___
class MinhaClasse:
# definição de função na classe
# primeiro argumento é self
def meu_metodo1(self, outros_args...):
# faça coisas aqui
def meu_metodo2(self, meu_attr):
# atributo criado por atribuição
self.meu_attr = meu_attr
...
__init__() é chamado toda vez que um objeto é criado.class Cliente: def __init__(self, nome): self.nome = nome # <--- Cria o atributo .nome e define para o parâmetro nome print("O método __init__ foi chamado")cliente = Cliente("Lara de Silva") #<--- __init__ é chamado implicitamente print(cliente.nome)
O método __init__ foi chamado
Lara de Silva
class Cliente: def __init__(self, nome, saldo): # <-- parâmetro saldo adicionadoself.nome = nome self.saldo = saldo # <-- atributo saldo adicionado print("O método __init__ foi chamado")cliente = Cliente("Lara de Silva", 1000) # <-- __init__ é chamado print(cliente.nome) print(cliente.saldo)
O método __init__ foi chamado
Lara de Silva
1000
class Cliente: def __init__(self, nome, saldo=0): #<--definir valor padrão para saldoself.nome = nome self.saldo = saldo print("O método __init__ foi chamado")cliente = Cliente("Lara de Silva") # <-- não especificar saldo explicitamenteprint(cliente.nome) print(cliente.saldo) # <-- atributo é criado de qualquer forma
O método __init__ foi chamado
Lara de Silva
0
class MinhaClasse:
def meu_metodo1(self, attr1):
self.attr1 = attr1
...
def meu_metodo2(self, attr2):
self.attr2 = attr2
...
obj = MinhaClasse()
obj.meu_metodo1(val1) # <-- attr1 criado
obj.meu_metodo2(val2) # <-- attr2 criado
class MinhaClasse: def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 ...# Todos os atributos são criados obj = MinhaClasse(val1, val2)
__init__()__init__()CamelCase para classes, lower_snake_case para funções e atributos
__init__()CamelCase para classe, lower_snake_case para funções e atributos
self como selfclass MinhaClasse:
# Funciona, mas não é recomendado
def meu_metodo(kitty, attr):
kitty.attr = attr
__init__()CamelCase para classe, lower_snake_case para funções e atributos
self é selfclass MinhaClasse:
"""Esta classe não faz nada"""
pass
Programação orientada a objetos em Python