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.

>>>

5 and hello are different

Lembre-se

• Atributos privativos não são verdadeiramente privativos, segundo o

compilador do Python.

• Planeje desde o início permitir que as subclasses façam mais coisas usando

suas APIs e atributos internos em vez de trancá-los para fora.

• Documente bem os campos protegidos para orientar os programadores que

criarão subclasses baseadas em sua classe em vez de tentar forçar um

controle de acesso com atributos privativos que jamais funcionará direito.

• O único uso verdadeiramente útil dos atributos privativos é para evitar

conflitos de nome com subclasses que você não controla.

Item 28: Herde da classe collections.abc para obter

tipos de contêiner personalizados

Grande parte do tempo os programadores de Python passam definindo classes

que contenham dados e descrevendo como esses objetos se relacionam com os

outros. Cada classe de Python é um contêiner de algum tipo, encapsulando em

um mesmo objeto atributos e funcionalidade. O Python também oferece tipos

nativos que funcionam como contêineres para administrar dados: listas, tuplas,

conjuntos e dicionários.

Quando se está criando classes para casos de uso simples como sequências, é

natural querer criar uma subclasse do tipo list do Python. Por exemplo, digamos

que se queira criar seu próprio tipo de lista que inclua métodos adicionais para

contar a frequência de seus membros.

class FrequencyList(list):

def __init__(self, members):

super().__init__(members)

def frequency(self):

counts = {}

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!