Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
eu mesmo | Conceitos de POO
Programação Orientada a Objetos em Python Avançado
course content

Conteúdo do Curso

Programação Orientada a Objetos em Python Avançado

Programação Orientada a Objetos em Python Avançado

1. Conceitos de POO
2. Herança
3. Encapsulamento
4. Polimorfismo e Abstração
5. Métodos Mágicos

bookeu mesmo

self é o primeiro argumento em métodos, cujo nome é acordado entre programadores Python. Quando uma instância executa um método, ela automaticamente se passa como o primeiro argumento. Vamos considerar a classe User que criamos anteriormente como um exemplo:

123456789101112
class User: def __init__(self, name, surname, age): # self=bob, name="Bob", surname="Smith", age=11 self.name = name # bob.name = "Bob" (name argument) self.surname = surname # bob.surname = "Smith" (surname argument) self.age = age # bob.age = 11 (age argument) bob = User("Bob", "Smith", 11) print(bob.name, bob.surname, bob.age)
copy

O método mágico __init__ recebe os argumentos self, name, surname e age. No exemplo fornecido, quando criamos a instância bob, esses argumentos são passados como valores.

Vamos usar a função print() para examinar os argumentos passados:

123456789101112131415161718
class User: def __init__(self, name, surname, age): print("===== INIT ARGUMENTS =====") print("self:", self) print("name:", name) print("surname:", surname) print("age:", age) self.name = name self.surname = surname self.age = age bob = User("Bob", "Smith", 11) print("===== GLOBAL =====") print("bob:", bob) print("bob.name:", bob.name) print("bob.surname:", bob.surname) print("bob.age:", bob.age)
copy

No exemplo dado, é evidente que a variável global bob e o parâmetro self dentro do método __init__ referem-se à mesma instância. Isso ilustra a convenção em Python em que métodos recebem a instância como o primeiro argumento, convencionalmente chamado self.

Seguindo essa convenção, os métodos têm acesso aos atributos da instância e podem realizar operações ou acessar valores específicos para aquela instância em particular.

Nota

Em Python, o parâmetro self serve como o primeiro argumento nos métodos e representa o objeto da instância que chama o método. Por convenção, utiliza-se o nome self, embora qualquer nome de variável válido pudesse ser usado. Este parâmetro fornece acesso aos atributos e métodos da instância, permitindo que o método interaja com e manipule seus próprios dados.

Para uma melhor compreensão, vamos criar uma função regular e nomeá-la init, a qual realizará as mesmas ações mas será chamada separadamente.

1234567891011
class User: pass def init(instance, arg1, arg2, arg3): instance.name = arg1 instance.surname = arg2 instance.age = arg3 bob = User() init(bob, "Bob", "Smith", 11) print(bob.name, bob.surname, bob.age)
copy

A função init recebe o primeiro argumento como uma instância e, em seguida, atribui os argumentos recebidos a ela. Da mesma forma, __init__ é utilizada ao criar uma classe, e self é um elemento necessário para a criação de diferentes métodos, os quais discutiremos mais adiante.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 6
some-alt