Python

Por que nas classes do Python devemos utilizar o object?

4 de julho de 2020

Por que nas classes do Python devemos utilizar o object?

Neste artigo veremos por que nas classes do Python devemos utilizar o object e também qual a importância desta ação para os nossos softwares.

porque estender object na classe python capa

Fala programador(a), tudo bem? Bora aprender mais sobre Python!

Essa questão de passar o object como um argumento foi definida na versão do Python número 3

Chamadas estas classes de new-style, declarando o argumento object, e as da versão 2 são chamadas de old-style, sem argumento

Na prática não é obrigatório passar o argumento, a classe funciona de ambas as formas (new e old)

A questão é que o código fica mais explícito, o que é pregado na documentação do Python como código Pythonico

Informando que a classe herda os métodos e propriedades de object, de uma foram que até quem é novo na linguagem entende esta passagem de características e não parece que ‘surgiu do nada’

Veja a comparação:

class Teste:
 pass

class Teste(object):
 pass

O primeiro exemplo é uma classe criada no old-style e o segundo uma classe com o new-style

Além disso a nova versão das classes no Python 3 não trás somente estas mudanças

Outros pontos positivos são:

  • A possibilidade de utilizar super, assim acessando os membros de superclasses diretamente;
  • O uso de __slots__, para classes com campos bem definidos e fixos;
  • As classes não podem ser lançados, a não ser que derivem de Exception;
  • A MRO (Method Resolution Order) mudou;

Você pode ler mais sobre elas aqui.

Conclusão

Neste artigo vimos por que nas classes do Python devemos utilizar o object

Na verdade não devemos, é algo totalmente opcional e vai funcionar igual das duas formas

A grande diferença é que declarando, o argumento fica explícito, o que é considerado uma boa prática de Python

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x