15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CAPÍTULO 4

Metaclasses e atributos

As metaclasses são frequentemente mencionadas quando se fala dos recursos do

Python na mídia, mas poucos entendem o que elas realizam na prática. O nome

metaclasse insinua um conceito acima e além das classes mundanas. Posto de

forma simples, uma metaclasse permite interceptar um comando class do Python

provisionar um comportamento especial cada vez que a classe for definida.

Os recursos nativos do Python para modificar dinamicamente os acessos a

atributos são poderosos e envoltos em uma espessa névoa de mistério. Assim

como as estruturas de código orientadas a objeto da linguagem Python, os

recursos de alteração dinâmica de atributos oferecem ferramentas maravilhosas

para facilitar a transição de casos simples para versões mais complicadas.

Entretanto, todo esse poder traz muitas armadilhas. Atributos dinâmicos

permitem sobrepor objetos com novas versões e causar efeitos colaterais

inesperados. As metaclasses podem criar comportamentos extremamente

bizarros que são inacessíveis para programadores novatos. É importante seguir a

regra da menor surpresa e somente usar esses mecanismos para implementar

estruturas de código que o programador já domine completamente.

Item 29: Use atributos comuns em vez dos métodos

get e set

Os programadores vindos de outras linguagens que se iniciam no Python podem

querer implementar métodos explícitos de leitura (getter) ou definição (setter)

em suas classes.

class OldResistor(object):

def __init__(self, ohms):

self._ohms = ohms

def get_ohms(self):

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!