Skip to content

Commit 2227199

Browse files
committed
uniformizar termos
1 parent 967adb3 commit 2227199

21 files changed

+74
-73
lines changed

capitulos/cap01.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ Ele deve devolver uma string apropriada para ser exibida aos usuários finais da
510510
Algumas vezes a própria string devolvida por `+__repr__+` é adequada para exibir ao usuário,
511511
e você não precisa programar `+__str__+`,
512512
porque a implementação de `+__str__+` herdada da classe `object` já invoca `+__repr__+`.
513-
O <<coord_tuple_ex>> é um dos muitos exemplos neste livro com um `+__str__+` personalizado.
513+
O <<coord_tuple_ex>> é um dos muitos exemplos neste livro com um `+__str__+` customizado.
514514

515515
[TIP]
516516
====

capitulos/cap04.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1500,7 +1500,7 @@ O <<ex_pyuca_sort>> mostra como ela é fácil de usar.
15001500
Isso é simples e funciona no GNU/Linux, no macOS, e no Windows, pelo menos com a minha pequena amostra.
15011501

15021502
A `pyuca` não leva o _locale_ em consideração.
1503-
Se você precisar personalizar a ordenação,
1503+
Se você precisar customizar a ordenação,
15041504
pode fornecer um caminho para uma tabela própria de ordenação para o construtor `Collator()`.
15051505
Sem qualquer configuração adicional, a biblioteca usa o https://fpy.li/4-18[_allkeys.txt_], incluído no projeto.
15061506
Esse arquivo é apenas uma cópia da

capitulos/cap05.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ com as anotações de tipo escritas como descrito na
161161
https://fpy.li/pep526[PEP 526—Syntax for Variable Annotations (_Sintaxe para Anotações de Variáveis_)] (EN).
162162
É mais legível, e torna fácil sobrescrever métodos ou acrescentar métodos novos.
163163
O <<coord_tuple_ex>> é a mesma classe `Coordinate`, com um par de atributos `float`
164-
e um `+__str__+` personalziado, para mostrar a coordenada no formato 55.8°N, 37.6°E.
164+
e um `+__str__+` customizado, para mostrar a coordenada no formato 55.8°N, 37.6°E.
165165
// as shown in <<coord_tuple_ex>>.
166166

167167
[[coord_tuple_ex]]
@@ -215,7 +215,7 @@ O decorador `@dataclass` não depende de herança ou de uma metaclasse,
215215
então não deve interferir no uso desses mecanismos pelo
216216
usuário.footnote:[Decoradores de classe são discutidos no <<ch_class_metaprog>>,
217217
na seção "Metaprogramação de classes", junto com as metaclasses.
218-
Ambos são formas de personalizar o comportamento de uma classe além do que seria possível com herança.]
218+
Ambos são formas de customizar o comportamento de uma classe além do que seria possível com herança.]
219219
A classe `Coordinate` no <<coord_dataclass_ex>> é uma subclasse de
220220
`object`.((("", startref="DCBover05")))
221221

@@ -729,7 +729,7 @@ Na prática, isso significa que `a` e `b` vão funcionar como atributos de inst
729729
somente para leitura—o que faz sentido, se lembrarmos que instâncias de `DemoNTClass`
730730
são apenas tuplas chiques, e tuplas são imutáveis.
731731

732-
A `DemoNTClass` também recebe uma docstring personalizada:
732+
A `DemoNTClass` também recebe uma docstring customizada:
733733

734734
[source, pycon]
735735
----
@@ -921,7 +921,7 @@ Se você achar que precisa usar essa opção, leia a
921921
https://fpy.li/3r[documentação de `dataclasses.dataclass`].
922922

923923

924-
Outras personalizações da classe de dados gerada podem ser feitas no nível dos campos.
924+
Outras customizações da classe de dados gerada podem ser feitas no nível dos campos.
925925

926926
[[field_options_sec]]
927927
==== Opções de campo

capitulos/cap07.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ def factorial(n):
482482
====
483483

484484
Outro grupo de "++lambda++s de um só truque" que `operator` substitui são funções para extrair itens de sequências ou para ler atributos de objetos:
485-
`itemgetter` e `attrgetter` são fábricas que criam funções personalizadas para fazer exatamente isso.
485+
`itemgetter` e `attrgetter` são fábricas que criam funções customizadas para fazer exatamente isso.
486486

487487
O <<itemgetter_demo>> mostra um uso frequente de `itemgetter`: ordenar uma lista de tuplas pelo valor de um campo.
488488
No exemplo, as cidades são exibidas por ordem de código de país (campo 1).
@@ -699,7 +699,7 @@ functools.partial(<function tag at 0x10206d1e0>, 'img', class_='pic-frame') <4>
699699
A função `functools.partialmethod` faz o mesmo que `partial`, mas foi projetada para trabalhar com métodos.
700700

701701
O módulo `functools` também inclui funções de ordem superior para serem usadas como decoradores de função, tais como `cache` e `singledispatch`, entre outras.
702-
Essas funções são tratadas no <<ch_closure_decorator>>, que também explica como implementar decoradores personalizados.((("", startref="FAFfp07")))((("", startref="fprogpack07")))((("", startref="functools07")))
702+
Essas funções são tratadas no <<ch_closure_decorator>>, que também explica como implementar decoradores customizados.((("", startref="FAFfp07")))((("", startref="fprogpack07")))((("", startref="functools07")))
703703

704704

705705
=== Resumo do capítulo

capitulos/cap09.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ As últimas duas funções no <<singledispatch_ex>> ilustram a sintaxe que funci
915915

916916

917917
[[singledispatch_ex]]
918-
.`@singledispatch` cria uma `@htmlize.register` personalizada, para empacotar várias funções em uma função genérica
918+
.`@singledispatch` cria uma `@htmlize.register` customizada, para empacotar várias funções em uma função genérica
919919
====
920920
[source, py]
921921
----
@@ -1011,7 +1011,7 @@ https://fpy.li/9-3[números inteiros e de ponto flutuante] (EN) em formatos volt
10111011
Usar ABCs ou `typing.Protocol` com `@singledispatch` permite que seu código suporte classes existentes ou futuras que sejam subclasses reais ou virtuais daquelas ABCs, ou que implementem aqueles protocolos. O uso de ABCs e o conceito de uma subclasse virtual são assuntos do <<ch_ifaces_prot_abc>>.
10121012
====
10131013

1014-
Uma qualidade notável do mecanismo de `singledispatch` é que você pode registrar funções especializadas em qualquer lugar do sistema, em qualquer módulo. Se mais tarde você adicionar um módulo com um novo tipo definido pelo usuário, é fácil acrescentar uma nova função específica para tratar aquele tipo. E é possível também escrever funções personalizadas para classes que você não escreveu e não pode modificar.
1014+
Uma qualidade notável do mecanismo de `singledispatch` é que você pode registrar funções especializadas em qualquer lugar do sistema, em qualquer módulo. Se mais tarde você adicionar um módulo com um novo tipo definido pelo usuário, é fácil acrescentar uma nova função específica para tratar aquele tipo. E é possível também escrever funções customizadas para classes que você não escreveu e não pode modificar.
10151015

10161016
O `singledispatch` foi uma adição muito bem pensada à biblioteca padrão, e oferece muitos outros recursos que não me cabe descrever aqui. Uma boa referência é a https://fpy.li/pep443[PEP 443--Single-dispatch generic functions] (EN) mas ela não menciona o uso de dicas de tipo, acrescentado posteriormente. A documentação do módulo `functools` foi aperfeiçoada e oferece um tratamento mais atualizado, com vários exemplos na seção referente ao https://docs.python.org/pt-br/3/library/functools.html#functools.singledispatch[`singledispatch`] (EN).
10171017

capitulos/cap11.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,12 +301,12 @@ O <<ex_format_t1>> implementa `+__format__+` para produzir as formatações vist
301301
<1> Usa a função embutida `format` para aplicar o `fmt_spec` a cada componente do vetor, criando um iterável de strings formatadas.
302302
<2> Insere as strings formatadas na fórmula `'(x, y)'`.
303303

304-
Agora vamos acrescentar um código de formatação personalizado à nossa mini-linguagem: se o especificador de formato terminar com `'p'`, vamos exibir o vetor em coordenadas polares: `<r, θ>`,
304+
Agora vamos acrescentar um código de formatação customizado à nossa mini-linguagem: se o especificador de formato terminar com `'p'`, vamos exibir o vetor em coordenadas polares: `<r, θ>`,
305305
onde `r` é a magnitute e θ (theta) é o ângulo em radianos. O restante do especificador de formato (o que quer que venha antes do `'p'`) será usado como antes.
306306

307307
[TIP]
308308
====
309-
Ao escolher a letra para um código personalizado de formato, evitei sobrescrever códigos usados por outros tipos. Na https://docs.python.org/pt-br/3/library/string.html#formatspec[Mini-Linguagem de Especificação de Formato] vemos que inteiros usam os códigos `'bcdoxXn'`, `floats` usam `'eEfFgGn%'` e strings usam `'s'`. Então escolhi `'p'` para coordenadas polares. Como cada classe interpreta esses códigos de forma independente, reutilizar uma letra em um formato personalizado para um novo tipo não é um erro, mas pode ser confuso para os usuários.
309+
Ao escolher a letra para um código customizado de formato, evitei sobrescrever códigos usados por outros tipos. Na https://docs.python.org/pt-br/3/library/string.html#formatspec[Mini-Linguagem de Especificação de Formato] vemos que inteiros usam os códigos `'bcdoxXn'`, `floats` usam `'eEfFgGn%'` e strings usam `'s'`. Então escolhi `'p'` para coordenadas polares. Como cada classe interpreta esses códigos de forma independente, reutilizar uma letra em um formato customizado para um novo tipo não é um erro, mas pode ser confuso para os usuários.
310310
====
311311

312312
Para gerar coordenadas polares, já temos o método `+__abs__+` para a magnitude. Vamos então escrever um método `angle` simples, usando a função `math.atan2()`, para obter o ângulo. Eis o código:
@@ -742,7 +742,7 @@ O último tópico do capítulo trata da sobreposição de um atributo de classe
742742

743743
Um((("Pythonic objects", "overriding class attributes", id="POoverride11")))((("attributes", "overriding class attributes", id="Aover11"))) recurso característico de Python é a forma como atributos de classe podem ser usados como valores default para atributos de instância. `Vector2d` contém o atributo de classe `typecode`. Ele é usado duas vezes no método `+__bytes__+`, mas é lido intencionalmente como `self.typecode`. As instâncias de `Vector2d` são criadas sem um atributo `typecode` próprio, então `self.typecode` vai, por default, se referir ao atributo de classe `Vector2d.typecode`.
744744

745-
Mas se incluirmos um atributo de instância que não existe, estamos criando um novo atributo de instância—por exemplo, um atributo de instância `typecode`—e o atributo de classe com o mesmo nome permanece intocado. Entretanto, daí em diante, sempre que algum código referente àquela instância contiver `self.typecode`, o `typecode` da instância será usado, na prática escondendo o atributo de classe de mesmo nome. Isso abre a possibilidade de personalizar uma instância individual com um `typecode` diferente.
745+
Mas se incluirmos um atributo de instância que não existe, estamos criando um novo atributo de instância—por exemplo, um atributo de instância `typecode`—e o atributo de classe com o mesmo nome permanece intocado. Entretanto, daí em diante, sempre que algum código referente àquela instância contiver `self.typecode`, o `typecode` da instância será usado, na prática escondendo o atributo de classe de mesmo nome. Isso abre a possibilidade de customizar uma instância individual com um `typecode` diferente.
746746

747747
O `Vector2d.typecode` default é `'d'`: isso significa que cada componente do vetor será representado como um número de ponto flutuante de dupla precisão e 8 bytes de tamanho quando for exportado para `bytes`. Se definirmos o `typecode` de uma instância `Vector2d` como `'f'` antes da exportação, cada componente será exportado como um número de ponto flutuante de precisão simples e 4 bytes de tamanho.. O <<typecode_instance_demo>> demonstra isso.
748748

@@ -787,7 +787,7 @@ Para modificar um atributo de classe, é preciso redefini-lo diretamente na clas
787787
----
788788
>>> Vector2d.typecode = 'f'
789789
----
790-
Porém, no Python, há uma maneira idiomática de obter um efeito mais permanente, e de ser mais explícito sobre a modificação. Como atributos de classe são públicos, eles são herdados por subclasses. Então é uma prática comum fazer a subclasse personalizar um atributo da classe. As views baseadas em classes do Django usam amplamente essa técnica. O <<typecode_subclass_demo>> mostra como se faz.
790+
Porém, no Python, há uma maneira idiomática de obter um efeito mais permanente, e de ser mais explícito sobre a modificação. Como atributos de classe são públicos, eles são herdados por subclasses. Então é uma prática comum fazer a subclasse customizar um atributo da classe. As views baseadas em classes do Django usam amplamente essa técnica. O <<typecode_subclass_demo>> mostra como se faz.
791791

792792
[[typecode_subclass_demo]]
793793
.O `ShortVector2d` é uma subclasse de `Vector2d`, que apenas sobrepõe o `typecode` default
@@ -823,7 +823,7 @@ Esse exemplo também explica porque não escrevi explicitamente o `class_name` e
823823

824824
Se eu tivesse escrito o `class_name` explicitamente, subclasses de `Vector2d` como `ShortVector2d` teriam que sobrescrever `+__repr__+` só para mudar o `class_name`. Lendo o nome do `type` da instância, tornei `+__repr__+` mais seguro de ser herdado.
825825

826-
Aqui termina nossa conversa sobre a criação de uma classe simples, que se vale do modelo de dados para se adaptar bem ao restante de Python: oferecendo diferentes representações do objeto, fornecendo um código de formatação personalizado, expondo atributos somente para leitura e suportando `hash()` para se integrar a conjuntos e mapeamentos.((("", startref="Aover11")))((("", startref="POoverride11")))
826+
Aqui termina nossa conversa sobre a criação de uma classe simples, que se vale do modelo de dados para se adaptar bem ao restante de Python: oferecendo diferentes representações do objeto, fornecendo um código de formatação customizado, expondo atributos somente para leitura e suportando `hash()` para se integrar a conjuntos e mapeamentos.((("", startref="Aover11")))((("", startref="POoverride11")))
827827

828828

829829
=== Resumo do capítulo
@@ -872,7 +872,7 @@ ____
872872

873873
Este((("Pythonic objects", "further reading on"))) capítulo tratou de vários dos métodos especiais do modelo de dados, então naturalmente as referências primárias são as mesmas do <<ch_data_model>>, onde tivemos uma ideia geral do mesmo tópico. Por conveniência, vou repetir aquelas quatro recomendações anteriores aqui, e acrescentar algumas outras:
874874

875-
O https://docs.python.org/pt-br/3/reference/datamodel.html[capítulo "Modelo de Dados"] em _A Referência da Linguagem Python_:: A maioria dos métodos usados nesse capítulo estão documentados em https://docs.python.org/pt-br/3/reference/datamodel.html#basic-customization["3.3.1. Personalização básica"].
875+
O https://docs.python.org/pt-br/3/reference/datamodel.html[capítulo "Modelo de Dados"] em _A Referência da Linguagem Python_:: A maioria dos métodos usados nesse capítulo estão documentados em https://docs.python.org/pt-br/3/reference/datamodel.html#basic-customization["3.3.1. Customização básica"].
876876

877877
pass:[<a class="orm:hideurl" href="https://fpy.li/pynut3"><em>Python in a Nutshell</em>, 3ª ed.,</a>] de Alex Martelli, Anna Ravenscroft, e Steve Holden:: Trata com profundidade dos métodos especiais .
878878

0 commit comments

Comments
 (0)