Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Dominando Objetos e Classes em Python: Guia Prático

Objetos e Classes em Python

Este tutorial explora recursos orientados a objetos centrais do Python, guiando você através de criação de classes, instanciação e boas práticas para código robusto.

Vídeo: Classes e Objetos em Python

Objetos e Classes em Python

Python é fundamentalmente orientado a objetos. Enquanto programação procedural foca em funções, POO centra em objetos que agrupam dados e comportamento.

Um objeto é pacote de atributos (dados) e métodos (funções). Uma classe é blueprint que define estrutura de um objeto.

Pense em classe como planta de casa — detalhando quartos, portas, janelas. Cada casa construída é objeto, ou instância, criada a partir da planta.

Múltiplos objetos podem ser construídos da mesma classe. Instanciação é processo de criar objeto a partir de classe.


Definindo Classe em Python

Definições de classe começam com palavra-chave class, espelhando como funções começam com def. Primeira string em classe é docstring, fornecendo descrição concisa.

class MyNewClass:
    '''This is a docstring. I have created a new class'''
    pass

Definir classe estabelece novo namespace para seus atributos, que podem ser dados ou métodos. Atributos especiais começando com underscores duplos, como __doc__, guardam metadados como docstring.

Uma vez definida, objeto classe é criado e pode ser usado para acessar atributos ou instanciar novos objetos.

class Person:
    "This is a person class"
    age = 10
    def greet(self):
        print('Hello')
# Saída: 10
print(Person.age)
# Saída: <function Person.greet>
print(Person.greet)
# Saída: "This is a person class"
print(Person.__doc__)

Saída

10 <function Person.greet at 0x7fc78c6e8160> This is a person class

Criando Objeto em Python

Classes servem como fábricas de objetos. Instanciação se assemelha a chamada de função:

>>> harry = Person()

Objeto resultante harry pode acessar atributos de classe via notação de ponto. Métodos de classe tornam-se bound methods na instância.

class Person:
    "This is a person class"
    age = 10
    def greet(self):
        print('Hello')
# criar novo objeto da classe Person
harry = Person()
# Saída: <function Person.greet>
print(Person.greet)
# Saída: <bound method Person.greet of <__main__.Person object>>
print(harry.greet)
# Chamar método greet() do objeto
# Saída: Hello
harry.greet()

Saída

<function Person.greet at 0x7fd288e4e160> <bound method Person.greet of <__main__.Person object at 0x7fd288e9fa30>> Hello

Note parâmetro self em definições de método. Quando método chamado em instância, Python passa automaticamente instância como primeiro argumento, permitindo harry.greet() executar sem fornecer self explicitamente.

Por convenção, self é usado, embora qualquer nome seja sintaticamente válido. Seguir convenção melhora legibilidade e alinha com padrões da comunidade.


Construtores em Python

Métodos especiais prefixados com underscores duplos desempenham papéis especiais. Método __init__, invocado na instanciação, atua como construtor, inicializando estado da instância.

class ComplexNumber:
    def __init__(self, r=0, i=0):
        self.real = r
        self.imag = i
    def get_data(self):
        print(f'{self.real}+{self.imag}j')
# Criar novo objeto ComplexNumber
num1 = ComplexNumber(2, 3)
# Chamar método get_data()
# Saída: 2+3j
num1.get_data()
# Criar outro objeto ComplexNumber
# e adicionar atributo dinâmico 'attr'
num2 = ComplexNumber(5)
num2.attr = 10
# Saída: (5, 0, 10)
print((num2.real, num2.imag, num2.attr))
# Acessar atributo ausente levanta erro
print(num1.attr)

Saída

2+3j (5, 0, 10) Traceback (most recent call last): File "<string>", line 27, in <module> print(num1.attr) AttributeError: 'ComplexNumber' object has no attribute 'attr'

Este exemplo demonstra que atributos podem ser adicionados dinamicamente a instâncias individuais sem afetar outras.


Deletando Atributos e Objetos

Atributos podem ser removidos com statement del. Deletar método ou atributo de classe afeta chamadas subsequentes.

>>> num1 = ComplexNumber(2,3)
>>> del num1.imag
>>> num1.get_data()
Traceback (most recent call last):
... AttributeError: 'ComplexNumber' object has no attribute 'imag'
>>> del ComplexNumber.get_data
>>> num1.get_data()
Traceback (most recent call last):
... AttributeError: 'ComplexNumber' object has no attribute 'get_data'

Objetos em si podem ser deletados. Remover referência libera nome; se nenhuma outra referência existe, objeto é garbage-collected automaticamente.

>>> c1 = ComplexNumber(1,3)
>>> del c1
>>> c1
Traceback (most recent call last):
... NameError: name 'c1' is not defined

Em Python, gerenciamento de memória é feito por reference counting e garbage collector cíclico, garantindo limpeza eficiente de recursos.

Dominando Objetos e Classes em Python: Guia Prático

python

  1. Classes e Objetos em C#: Fundamentos para POO Robusta
  2. Dominando Classes e Métodos Abstratos em C#: Guia Prático
  3. Entendendo Classes e Métodos Parciais em C#
  4. Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
  5. Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
  6. Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
  7. Palavras-chave e Identificadores em Python: Dominando Palavras Reservadas e Convenções de Nomenclatura
  8. Declarações, Indentação e Comentários em Python: Guia Claro
  9. Dominando Operações com Diretórios e Arquivos em Python
  10. Dominando Exceções Customizadas em Python: Guia Prático