Revisão de Classes e Objetos
---
id: 67f39d848979082814c07d9c
title: Revisão de Classes e Objetos
challengeType: 31
dashedName: review-classes-and-objects
---
# --description--
Classes e Objetos em Python
- Definição de Classe: Uma classe é um modelo para criar objetos. Ela define o comportamento que um objeto terá através de seus atributos e métodos. Aqui está um exemplo básico de uma definição de classe em Python:
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f'{self.name.upper()} says woof woof!')
- Criando Objetos: Objetos são instâncias de uma classe. Eles são criados chamando a classe com os argumentos necessários.
dog1 = Dog('Jack', 3)
dog2 = Dog('Thatcher', 5)
dog1.bark() # JACK says woof woof!
dog2.bark() # THATCHER says woof woof!
- Chamando Métodos em Objetos: Você pode chamar métodos em objetos para executar ações ou recuperar informações.
object_name1.method_name()
object_name2.method_name()
- Diferença Entre Classe e Objeto: Uma classe é um modelo reutilizável, enquanto um objeto é uma instância específica dessa classe com dados reais.
Atributos
- Atributos de Instância: Definidos em
__init__()usandoselfe únicos para cada objeto. - Atributos da Classe: Definidos diretamente dentro da classe e compartilhados por todas as instâncias.
class Dog:
species = 'French Bulldog' # Class attribute
def __init__(self, name):
self.name = name # Instance attribute
print(Dog.species) # French Bulldog
jack = Dog('Jack')
print(jack.name) # Jack
print(jack.species) # French Bulldog
Métodos
- Métodos: Funções definidas dentro de uma classe que operam nos atributos do objeto.
class Car:
def __init__(self, color, model):
self.color = color
self.model = model
def describe(self):
return f'This car is a {self.color} {self.model}'
my_car_1 = Car('red', 'Tesla Model S')
print(my_car_1.describe()) # This car is a red Tesla Model S
- Acessando Métodos: Chame métodos em objetos usando a notação de ponto. Aqui está um exemplo de chamada do método
describeem dois objetos de carro diferentes:
class Car:
def __init__(self, color, model):
self.color = color
self.model = model
def describe(self):
return f'This car is a {self.color} {self.model}'
my_car_1 = Car('red', 'Tesla Model S')
my_car_2 = Car('green', 'Lamborghini Revuelto')
print(my_car_1.describe()) # Calling method using the dot notation
print(my_car_2.describe()) # Calling method using the dot notation
Métodos Dunder (Mágicos)
- Definição: Métodos especiais que começam e terminam com um duplo underscore (por exemplo,
__init__,__len__,__str__,__eq__). Python os usa internamente para operações internas.
class Book:
def __init__(self, title, pages):
self.title = title
self.pages = pages
def __len__(self):
return self.pages
def __str__(self):
return f"'{self.title}' has {self.pages} pages"
def __eq__(self, other):
return self.pages == other.pages
book1 = Book('Built Wealth Like a Boss', 420)
print(len(book1)) # 420
print(str(book1)) # 'Built Wealth Like a Boss' has 420 pages
- Chamando métodos dunder indiretamente: Você não precisa chamar métodos dunder diretamente. Em vez disso, o Python os chama automaticamente quando certas ações acontecem. Essas operações incluem:
- operações aritméticas como adição, subtração, multiplicação, divisão e outras. Além disso,
__add__()é chamado,__sub__()para subtração,__mul__()para multiplicação e__truediv__()para divisão. - operações de string como concatenação, repetição, formatação e conversão para texto.
__add__()é chamado para concatenação,__mul__()para repetição,__format__()para formatação,__str__()e__repr__()para conversão para texto e assim por diante. - operações de comparação como igualdade, menor que, maior que e outras.
__eq__()é chamado para verificações de igualdade,__lt__()para menor que,__gt__()para maior que e assim por diante. - operações de iteração como tornar um objeto iterável e avançar pelos itens.
__iter__()é chamado para retornar um iterador e__next__()para buscar o próximo item.
Exemplo do Mundo Real: Carrinho de Compras
- Classe Cart com Métodos Dunder: Permite adicionar, remover, iterar e verificar conteúdos com comportamento embutido.
class Cart:
def __init__(self):
self.items = []
def add(self, item):
self.items.append(item)
def remove(self, item):
if item in self.items:
self.items.remove(item)
else:
print(f'{item} is not in cart')
def list_items(self):
return self.items
def __len__(self):
return len(self.items)
def __getitem__(self, index):
return self.items[index]
def __contains__(self, item):
return item in self.items
def __iter__(self):
return iter(self.items)
cart = Cart()
cart.add('Laptop')
print(len(cart)) # 1
print('Laptop' in cart) # True
# --assignment--
Revise os tópicos e conceitos de Classes e Objetos.