O que são Métodos e Atributos e Como Eles Funcionam?

Na última lição, você aprendeu sobre classes e como elas funcionam como modelos para criar objetos. Aqui, vamos nos aprofundar em atributos e métodos. Vamos dar uma olhada mais de perto nos atributos primeiro e depois nos métodos. Atributos são variáveis que pertencem a um objeto, então eles armazenam dados. Existem dois tipos de atributos: atributos de instância e atributos de classe. Os atributos de instância são únicos para cada objeto criado a partir de uma classe e você geralmente os define com o método __init__. Os atributos de classe, por outro lado, pertencem à própria classe e são compartilhados por todas as instâncias dessa classe. Para acessar um atributo, você usa a notação de ponto. Aqui estão exemplos de atributos de instância e de classe e como acessá-los a partir de objetos:
class Dog:
    species = "French Bulldog" # Class attribute

    def __init__(self, name):
        self.name = name # Instance attribute

print(Dog.species) # French Bulldog

dog1 = Dog("Jack")
print(dog1.name)    # Jack
print(dog1.species) # French Bulldog

dog2 = Dog("Tom")
print(dog2.name)    # Tom
print(dog2.species) # French Bulldog
Observe que você pode acessar atributos de classe diretamente da própria classe, mas é necessário criar um objeto e passar dados para ele primeiro antes de poder acessar atributos de instância. Carros são outro bom exemplo, já que todos os carros têm um modelo e cor:
class Car:
    def __init__(self, color, model):
        self.color = color
        self.model = model

car_1 = Car("red", "Toyota Corolla")
car_2 = Car("green", "Lamborghini Revuelto")

print(car_1.model) # Toyota Corolla
print(car_2.model) # Lamborghini Revuelto

print(car_1.color) # red
print(car_2.color) # green
Métodos são funções definidas dentro de uma classe. Com eles, qualquer objeto definido a partir de uma classe pode executar ações que operam ou modificam seus próprios dados. Você também acessa um método com notação de ponto. Por exemplo, cães podem latir. Então podemos ter um método bark na classe Dog como você viu em uma lição anterior:
class Dog:
   species = "French Bulldog"

   def __init__(self, name):
     self.name = name

   def bark(self):
       return f"{self.name} says woof woof!"

jack = Dog("Jack")
jill = Dog("Jill")

print(jack.bark()) # Jack says woof woof!
print(jill.bark()) # Jill says woof woof!
Uma classe Car também pode ter um método describe:
class Car:
    def __init__(self, color, model):
        self.color = color  # Instance attribute
        self.model = model  # Instance attribute

    def describe(self):
        return f"This car is a {self.color} {self.model}"

car_1 = Car("red", "Toyota Corolla")
car_2 = Car("green", "Lamborghini Revuelto")

print(car_1.describe()) # This car is a red Toyota Corolla
print(car_2.describe()) # This car is a green Lamborghini Revuelto
Este módulo não possui perguntas. Marque como concluído.