1
resposta

Objetos de tipos diferentes

O que caracteriza objetos de tipos diferentes? como é o caso de vingadores e atlanta onde um é um filme e o outro é uma série.

1 resposta

Bom dia Josimar, tudo bem? Espero que sim!

O que caracteriza os objetos para serem de tipos diferentes é a classe (class dentro do Python).

Quando você cria uma classe, você está criando um 'molde' para criação de objetos daquele tipo. Essa é a ideia central do paradigma de programação Orientada a Objetos.

Portanto ao criar a classe Serie e a classe Filme, você está criando 'moldes' para criação de objetos do tipo série e do tipo filme respectivamente.

Os números inteiros no Python, por exemplo, são do tipo int, significa que existe uma classe int em que você pode instanciar objetos do tipo inteiro. Nesse caso, quando você atribui um número inteiro a uma variável, o Python cria um objeto do tipo inteiro usando a class int.

Logo, quando criamos o objeto vingadores, ele está com o molde da classe filme e o objeto Atlanta está com o molde da classe Série. Por isso são de tipos diferentes.

Vale deixar uma observação aqui:

  • Se você criar dois objetos do mesmo tipo com os mesmos atributos, eles seriam apenas do mesmo tipo mas não seriam iguais.

Exemplo:

class Filme:
    def __init__(self, nome, ano, duracao):
        self._nome = nome.title()
        self.ano = ano
        self.duracao = duracao

filme1 = Filme("Vingadores", 2020, 120)
filme2 = Filme("Vingadores", 2020, 120)
print(filme1==filme2)

O código resultaria em False, mostrando que apesar de terem os mesmos atributos os objetos são diferentes, apresentando apenas o mesmo tipo. Para que esses objetos sejam iguais, você precisa usar a função __eq__ e escolher o critério para que esses objetos sejam iguais:

class Filme:
    def __init__(self, nome, ano, duracao):
        self.nome = nome.title()
        self.ano = ano
        self.duracao = duracao

    def __eq__(self, outro):
      if isinstance(outro, Filme):
          return self.nome == outro.nome
      return False

filme1 = Filme("Vingadores", 2020, 120)
filme2 = Filme("Vingadores", 2020, 120)
print(filme1==filme2)

Nesse caso, definimos na classe que os objetos do 'molde' Filme serão iguais quando o atributo nome dos dois objetos for exatamente o mesmo.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!