Class | Python
- Class | Python
class Computer:
computer_count = 0
def __init__(self, cpus, architecture):
self.cpus: int = cpus
self.architecture: str = architecture
Computer.computer_count += 1
def power_on(self):
print("Powering on computer")
def shutdown(self):
print("Shutting down computer")
@classmethod
def get_computer_count(cls):
return cls.computer_count
@staticmethod
def is_small_computer(cpus):
return cpus < 4
Métodos Dunder
Criação e Representação de Objetos
__init__(self, ...)– Construtor, chamado quando um objeto é criado. Usado para inicializar atributos.__str__(self)– Representação amigável para usuários. Define o que é exibido ao usarprint(obj).__repr__(self)– Representação voltada para desenvolvedores. Retorna uma string detalhada, útil para depuração (debug).
Manipulação de Estruturas de Dados
__len__(self)– Retorna o tamanho de um objeto, permitindo o uso delen(obj).__getitem__(self, key)– Permite acessar elementos por índice/chave (obj[key]).__setitem__(self, key, value)– Permite definir valores em índices (obj[key] = valor).__delitem__(self, key)– Permite deletar valores de um objeto usando índice (del obj[key]).
Comportamento de Função e Iteração
**call**(self, \*args, **kwargs)– Torna um objeto "chamável" como uma função (obj()).__iter__(self)– Torna o objeto iterável, permitindo uso em loops (for item in obj).__next__(self)– Retorna o próximo elemento em uma iteração.
Comparação e Operadores
__eq__(self, other)– Define comportamento do operador==(igualdade).__lt__(self, other)– Define comportamento do operador<(menor que, útil para ordenação).__add__(self, other)– Define comportamento do operador+(adição entre objetos personalizados, como vetores).
Classe abstrata | Python
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
@abstractmethod
def move(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
def move(self):
return "Runs"
class Bird(Animal):
def make_sound(self):
return "Chirp!"
def move(self):
return "Flies"
# Uso das classes
dog = Dog()
print(dog.make_sound()) # Saída: Woof!
print(dog.move()) # Saída: Runs
bird = Bird()
print(bird.make_sound()) # Saída: Chirp!
print(bird.move()) # Saída: Flies
Generics | Python
from typing import TypeVar, Generic, List
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self):
self.items: List[T] = []
def push(self, item: T):
self.items.append(item)
def pop(self) -> T:
return self.items.pop()
def peek(self) -> T:
return self.items[-1]
def is_empty(self) -> bool:
return len(self.items) == 0
def size(self) -> int:
return len(self.items)
# Uso da classe Stack com diferentes tipos
int_stack = Stack[int]()
int_stack.push(1)
int_stack.push(2)
print(int_stack.pop()) # Saída: 2
str_stack = Stack[str]()
str_stack.push("a")
str_stack.push("b")
print(str_stack.pop()) # Saída: b