Classes e objetos Python [com exemplos]

Publicados: 2021-06-25

OOP – abreviação de Object-Oriented Programming – é um paradigma que se baseia em objetos e classes para criar programas funcionais. As OOPs trabalham na modularidade do código, e classes e objetos ajudam a escrever partes de código simples e reutilizáveis ​​que podem ser usadas para criar recursos e módulos de software maiores. C++, Java e Python são as três linguagens de programação orientada a objetos mais usadas. No entanto, quando se trata de casos de uso de hoje – como Ciência de Dados e Análise Estatística – o Python supera os outros dois.

Isso não é surpresa, pois os Cientistas de Dados em todo o mundo juram pelos recursos da linguagem de programação Python. Se você está planejando iniciar uma carreira em Ciência de Dados e deseja dominar o Python – saber sobre classes e objetos deve ser sua primeira prioridade.

Por meio deste artigo, ajudaremos você a entender todas as nuances por trás de objetos e classes em Python, além de como você pode começar a criar suas próprias classes e trabalhar com elas.

Índice

Aulas em Python

Uma classe em Python é um protótipo definido pelo usuário usando quais objetos são criados. Simplificando, uma classe é um método para agrupar dados e funcionalidades . As duas palavras-chave são importantes a serem observadas. Dados significa quaisquer variáveis ​​instanciadas ou definidas, enquanto funcionalidade significa qualquer operação que possa ser executada nesses dados. Juntamente com dados e funcionalidades agrupados em um pacote, obtemos classes.

Para entender a necessidade de criar uma classe, considere o seguinte exemplo simples. Suponha que você queira rastrear gatos em sua vizinhança com características diferentes como idade, raça, cor, peso, etc. Você pode usar uma lista e rastrear elementos de forma 1:1, ou seja, você pode rastrear a raça idade, ou idade ao peso usando uma lista. E se houver 100 gatos diferentes? E se houver mais propriedades a serem adicionadas? Nesse cenário, o uso de listas tende a ser desorganizado e confuso.

É exatamente aí que entram as aulas!

As classes ajudam você a criar uma estrutura de dados definida pelo usuário que possui seus próprios membros de dados (variáveis) e funções de membro. Você pode acessar essas variáveis ​​e métodos simplesmente criando um objeto para a classe (falaremos mais sobre isso depois). Então, em certo sentido, as classes são como um projeto para um objeto.

Além disso, a criação de classes cria automaticamente um novo tipo de objeto – o que permite que você crie mais objetos do mesmo tipo. Cada instância de classe pode ter atributos anexados a ela para manter seu estado. As instâncias de classe podem ter métodos (conforme definido por sua classe) para modificar o estado.

Alguns pontos sobre a classe Python:

  • As classes são criadas usando a palavra-chave class.
  • Atributos são as variáveis ​​específicas da classe que você criou.
  • Esses atributos são sempre públicos por natureza e podem ser acessados ​​usando o operador ponto após o nome da classe. Por exemplo, ClassName.AttributeName irá buscar o detalhe de atributo específico dessa classe específica.

Sintaxe para definir uma classe:

classe ClassName:

# Declaração-1

.

.

.

# Declaração-N

Por exemplo:

gato de classe:

passar

No exemplo acima, a palavra-chave class indica que você está criando uma classe seguida do nome da classe (Cat neste caso). O papel desta classe ainda não foi definido.

Vantagens de usar classes em Python

  • As classes ajudam você a manter todos os diferentes tipos de dados organizados adequadamente em um só lugar. Dessa forma, você mantém o código limpo e modular, melhorando a legibilidade do seu código.
  • O uso de classes permite que você se beneficie de outro paradigma OOP – chamado Herança. É quando uma classe herda as propriedades de outra classe.
  • As classes permitem que você substitua quaisquer operadores padrão.
  • As classes tornam seu código reutilizável, o que torna seu programa muito mais eficiente.

Objetos em Python

Um objeto é simplesmente uma instância de qualquer classe que você definiu. No momento em que você cria uma classe, uma instância automática já é criada. Assim, como no exemplo, a classe Cat instancia automaticamente um objeto como um gato real – de raça persa e 3 anos de idade. Você pode ter muitas instâncias diferentes de gatos com propriedades diferentes, mas para que faça sentido – você precisará de uma classe como guia. Caso contrário, você acabará se sentindo perdido, sem saber quais informações são necessárias.

Um objeto é amplamente caracterizado por três coisas:

  • Estado: Refere-se aos vários atributos de qualquer objeto e às várias propriedades que ele pode mostrar.
  • Comportamento: Isso basicamente denota os métodos desse objeto. Também reflete como esse objeto em particular interage ou responde a outros objetos.
  • Identidade: Identidade é o nome exclusivo do objeto usando o qual pode ser invocado como e quando necessário.

1. Declarando Objetos

Declarar objetos também é conhecido como instanciar uma classe porque assim que você define uma classe, um objeto padrão é criado em si mesmo (como vimos anteriormente) – que é a instância dessa classe. Da mesma forma, cada vez que você cria um objeto, você está essencialmente criando uma nova instância de sua classe.

Em termos das três coisas (estado, comportamento, identidade) que mencionamos anteriormente, todas as instâncias (objetos) compartilham comportamento e estado, mas suas identidades são diferentes. Uma única classe pode ter qualquer número de objetos, conforme exigido pelo programador.

Confira o exemplo abaixo. Aqui está um programa que explica como instanciar classes.

gato de classe:

# Uma aula simples

# atributo

attr1 = “felino”

attr2 = “gato”

# Um método de exemplo

def divertido(auto):

print(“Sou um”, self.attr1)

print(“Sou um”, self.attr2)

#Código do motorista

# Instanciação do objeto

Tom = gato()

# Acessando atributos de classe

# e método através de objetos

print(Tom.attr1)

Tom.fun();

A saída deste programa simples será a seguinte:

Felino

eu sou um felino

eu sou um gato

Como você pode ver, primeiro criamos uma classe chamada cat e então instanciamos um objeto com o nome 'Tom'. As três saídas que obtivemos foram as seguintes:

  • Felino – este foi o resultado da declaração print(Tom.attr1). Como Tom é um objeto da classe Cat e attr1 foi definido como Feline, esta função retorna a saída Feline.
  • Eu sou um felino – Tom.fun(); usa o objeto chamado Tom para invocar uma função na classe cat, conhecida como 'fun'. O objeto Tom traz consigo os atributos para a função e, portanto, a função gera as duas frases a seguir – “I'm a feline”.
  • Eu sou um gato – mesmo motivo que disse acima.

Agora que você entende como classes e objetos funcionam em Python, vamos ver alguns métodos essenciais.

2. O Método Self

Todos os métodos definidos em qualquer classe precisam ter um primeiro parâmetro extra na definição da função. Este parâmetro não é atribuído a nenhum valor pelo programador. No entanto, quando o método é chamado, o Python fornece um valor.

Como resultado, se você definir uma função sem argumentos, ela ainda terá tecnicamente um argumento. Isso é chamado de 'self' em Python. Para entender isso melhor, você pode revisar seus conceitos de Ponteiros em C++ ou referenciá-los em Java. O método self funciona essencialmente da mesma maneira.

Para entender melhor – quando chamamos qualquer método de um objeto, por exemplo:

myObject.myMethod(arg1, arg2), o Python converte automaticamente em myClass.myMethod(myObject, arg1, arg2).

Então você vê, o próprio objeto se torna o primeiro argumento do método. É disso que trata o self em Python.

3. O método __init__

Esse método é semelhante aos construtores em Java ou C++. Assim como os construtores, o método init é usado para inicializar o estado de um objeto. Ele contém uma coleção de instruções (instruções) que são executadas no momento da criação do objeto. Quando um objeto é instanciado para uma classe, o método init executará automaticamente os métodos inicializados por você.

Aqui está um trecho de código para explicar isso melhor:

# Uma classe de exemplo com o método init

pessoa da classe:

# método ou construtor de inicialização

def __init__(self, name):

self.name = nome

# Método de Amostra

def diga_oi(self):

print('Olá, meu nome é', self.name)

p = Pessoa(“Sam”)

p.say_hi()

Saída:

Oi, meu nome é Sam

Aprenda cursos de análise de dados online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Variáveis ​​de classe e instância

As variáveis ​​de instância são exclusivas para cada instância, enquanto as variáveis ​​de classe são para métodos e atributos compartilhados por todas as instâncias de uma classe. Conseqüentemente, variáveis ​​de instância são basicamente variáveis ​​cujo valor é atribuído dentro de um construtor ou método com self. Por outro lado, as variáveis ​​de classe são aquelas cujos valores são atribuídos dentro de uma classe.

Percorra o código a seguir para entender como as variáveis ​​de instância são definidas usando um construtor (método init):

gato de classe:

# Variável de classe

animal = 'gato'

# O método ou construtor init

def __init__(self, raça, cor):

# Variável de instância

self.raça = raça

self.color = cor

# Objetos da classe Dog

Tom = gato(“Persa”, “preto”)

Nevado = gato(“Indie”, “branco”)

print("Detalhes do Tom:')

print('Tom é um', Tom.animal)

print('Raça: ', Tom.raça)

print('Cor: ', Tom.cor)

print('\nDetalhes da neve:')

print("Nevado é um', Nevado.animal)

print('Raça: ', Snowy.raça)

print('Cor: ', Snowy.color)

Se você seguir o código acima linha por linha, aqui está a saída que você receberá:

Saída:

Detalhes do Tom:

Tom é um gato

Raça: Persa

Cor preta

Detalhes da neve:

Snowy é um gato

Raça: Indie

Cor branca

Para concluir

Python é uma linguagem de programação comparativamente mais fácil, principalmente para iniciantes. Depois de dominar o básico, você estará pronto para trabalhar com várias bibliotecas Python e resolver problemas específicos de dados. No entanto, lembre-se de que, embora a jornada comece com a compreensão de classes e objetos, você também deve aprender a trabalhar com diferentes objetos, classes e suas nuances.

Esperamos que este artigo tenha ajudado a esclarecer suas dúvidas sobre classes e objetos em Python. Se você tiver alguma dúvida, por favor, deixe-nos um comentário abaixo - nós entraremos em contato com você em breve!

Se você está procurando uma mudança de carreira e está procurando ajuda profissional - upGrad está aqui para você. Confira nosso Programa PG Executivo em Ciência de Dados oferecido em colaboração com o IIIT-B . Familiarize-se com mais de 14 linguagens e ferramentas de programação (incluindo Python) e tenha acesso a mais de 30 projetos relevantes para o setor. Estudantes de qualquer fluxo podem se inscrever neste programa, desde que tenham uma pontuação mínima de 50% em seu bacharelado.

Temos uma base sólida de alunos em mais de 85 países, mais de 40.000 alunos pagos em todo o mundo e mais de 500.000 profissionais trabalhando felizes. Nossa assistência profissional de 360 ​​graus, combinada com a exposição de estudos e brainstorming com estudantes globais, permite que você aproveite ao máximo sua experiência de aprendizado.

O que são classes e objetos em Python?

Uma classe é um modelo ou um blueprint que vincula as propriedades e funções de uma entidade. Em Python, a palavra-chave class é usada para definir uma classe. Todas as entidades ou objetos com atributos semelhantes podem ser colocados em uma única classe e podem ser acessados ​​pelas funções-membro.
Um objeto é uma instância de uma classe. Uma vez que uma classe é criada, os objetos obtêm todas as informações dessa classe. É como uma cópia da classe respeitada com os valores reais. Um objeto é categorizado por três fatores:
uma. Estado
b. Comportamento
c. Identidade

Qual paradigma de programação Python segue?

Existem quatro principais paradigmas distinguíveis seguidos por Python orientado a objetos, procedural, funcional e imperativo. Python suporta fortemente conceitos orientados a objetos; no entanto, não é uma linguagem de programação puramente orientada a objetos.
A razão para suportar vários paradigmas de programação é que ele é visivelmente influenciado por alguns scripts como CoffeeScript e linguagens de programação orientadas a objetos como Ruby. Ele também combina com linguagens como R para aumentar a eficiência e o poder computacional.
Sendo uma linguagem multiparadigma, acredita-se que o Python seja uma das linguagens mais versáteis. É amplamente utilizado para desenvolvimento, análise de dados, web scraping e automação.

O que são modificadores de acesso em Python?

Semelhante a outras linguagens de programação orientadas a objetos, uma classe em Python também possui três modificadores de acesso:
uma. Modificador de acesso público : Os membros de classe especificados como public podem ser acessados ​​diretamente por qualquer função, ou seja, por funções de membro, bem como funções não-membro. Se nenhum especificador de acesso for especificado, todos os membros da classe serão considerados membros públicos por padrão pelo compilador.
b. Modificador de Acesso Privado : Esses membros da classe estão ocultos de outros membros da classe. Eles só podem ser acessados ​​pelas funções-membro da classe em que estão definidos.
c. Modificador de acesso protegido : Os membros de classe especificados como protegidos só podem ser acessados ​​pelas funções de membro da mesma classe e gerarão um erro se tentarem acessar fora da classe. A única grande diferença entre o especificador de acesso privado e protegido é que os membros protegidos podem ser herdados, enquanto os membros privados não podem ser herdados.