CodeGym /Cursos /Python SELF PT /Inicialização de objeto

Inicialização de objeto

Python SELF PT
Nível 15 , Lição 4
Disponível

4.1 Inicialização

Normalmente, logo após a criação, os objetos ainda não estão prontos para uso. Primeiro, você precisa passar todos os dados necessários: parâmetros de trabalho, valores iniciais, links para outros objetos, etc.

Esse processo é chamado de inicialização e deve ocorrer logo após a criação do objeto.

Suponha que você tenha uma classe Gato (Cat) e queira definir um nome e idade para ela, isso pode ser feito de várias maneiras:

Inicialização de atributos após a criação do objeto

Neste exemplo, inicialmente é criado:

  • um objeto vazio Cat.
  • uma instância da classe Cat chamada barsik.
  • em seguida, dois atributos são configurados para o objeto barsik: name e age são adicionados diretamente ao objeto.


class Cat:
    pass
        

# Criação do objeto Cat
barsik = Cat()
        
# Inicialização de atributos após a criação do objeto
barsik.name = "Barsik"
barsik.age = 5
        
print(f"Nome do gato: {barsik.name}, idade: {barsik.age}")  # Saída: Nome do gato: Barsik, idade: 5

Usando um método para inicializar atributos

Neste exemplo, o método initialize é usado para inicializar atributos. O objeto Cat é criado sem um único atributo e, em seguida, o método initialize() é usado para definir os valores dos atributos.


class Cat:
    def initialize(self, name, age):
        self.name = name
        self.age = age
        

# Criação do objeto Cat
barsik = Cat()
        
# Inicialização de atributos através do método
barsik.initialize("Barsik", 5)
        
print(f"Nome do gato: {barsik.name}, idade: {barsik.age}")  # Saída: Nome do gato: Barsik, idade: 5

Usando campos de classe

Neste exemplo, os atributos name e age são definidos no nível da classe. Após a criação do objeto barsik, os atributos são inicializados diretamente.


class Cat:
    name = ""
    age = 0
        

# Criação do objeto Cat
barsik = Cat()
        
# Inicialização de atributos do objeto
barsik.name = "Barsik"
barsik.age = 5
        
print(f"Nome do gato: {barsik.name}, idade: {barsik.age}")  # Saída: Nome do gato: Barsik, idade: 5

Qual método é melhor? Nenhum! O melhor é usar um construtor :)

4.2 Construtor

Construtor — é um método especial que é chamado automaticamente ao criar um novo objeto de classe. O construtor é usado para inicializar os campos do objeto e pode realizar quaisquer ações iniciais necessárias para configurar o objeto.

Em Python, o construtor é o método chamado __init__. Aqui estão os principais fatos sobre ele:

  • O método __init__ — é o construtor em Python. É chamado automaticamente quando uma nova instância da classe é criada.
  • __init__ aceita pelo menos um parâmetro — self, que se refere ao objeto sendo criado. Além disso, outros parâmetros podem ser passados para inicializar os atributos do objeto.
  • Dentro do método __init__ você pode definir valores iniciais dos atributos do objeto usando self.
  • O construtor pode realizar quaisquer ações necessárias para configurar o objeto, como validação de dados de entrada ou estabelecimento de links com outros objetos.

Os parâmetros são passados para o construtor automaticamente, você só precisa especificá-los entre parênteses ao criar o objeto.

Veja como será a inicialização do nosso gato usando o construtor:


class Cat:
    def __init__(self, name, age):
        self.name = name
        self.age = age


# Criação do objeto Cat com nome e idade
barsik = Cat("Barsik", 5)

print(f"Nome do gato: {barsik.name}, idade: {barsik.age}")  # Saída: Nome do gato: Barsik, idade: 5

Após a criação de um objeto do tipo Cat, o método __init__ será chamado automaticamente e três parâmetros serão passados para ele:

  • Referência ao objeto barsik no parâmetro self
  • String "Barsik" no parâmetro name
  • Número 5 no parâmetro age

É elegante e bonito.

Validação de dados

A validação de dados também pode ser realizada no construtor. Afinal, o objetivo do construtor é formar um objeto válido (correto) com o qual você pode continuar trabalhando. Exemplo:


class Cat:
    def __init__(self, name, age):
        if age < 0:
            raise ValueError("A idade não pode ser negativa")
        self.name = name
        self.age = age


# Criação do objeto Cat com verificação de idade
try:
    barsik = Cat("Barsik", -3)
except ValueError as e:
    print(e)  # Saída: A idade não pode ser negativa
               
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION