Skip to content

Commit bae8e10

Browse files
committed
cap13: ortografia
1 parent 42d422e commit bae8e10

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

online/cap13.adoc

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,25 @@ Desde o Python 3.8, temos quatro maneiras de definir e usar interfaces.
1919
Elas estão ilustradas no _Mapa de Sistemas de Tipagem_ (<<type_systems_described>>).
2020

2121
[[type_systems_described]]
22-
.Na metade superior, checagens de tipo dinâmicas (em tempo de execução) usando só o interpretador Python; a metade inferior requer um checador estático externo como o Mypy, ou um IDE como a PyCharm. Os quadrantes da esquerda se referem a tipagem baseada na estrutura do objeto—isto é, os métodos oferecidos pelo objeto, independente de sua classe ou superclasses; os quadrantes da direita dependem de tipos explicitamente nomeados no código: a classe do objeto, ou suas superclasses.
22+
.Na metade superior, checagens de tipo dinâmicas (em tempo de execução) usando só o interpretador Python; a metade inferior requer um checador estático externo como o Mypy, ou um IDE como o PyCharm. Os quadrantes da esquerda se referem à tipagem baseada na estrutura do objeto—isto é, os métodos oferecidos pelo objeto, independente de sua classe ou superclasses; os quadrantes da direita dependem de tipos explicitamente nomeados no código: a classe do objeto, ou suas superclasses.
2323
image::../images/mapa-da-tipagem.png[align="center",pdfwidth=12cm]
2424

2525
Podemos as quatro abordagens assim:
2626

2727
Tipagem pato (_duck typing_)::
28-
A((("duck typing"))) tratamento padrão para tipos em Python desde o início.
28+
O((("duck typing"))) tratamento padrão para tipos em Python desde o início.
2929
Estamos estudando tipagem pato desde o primeiro capítulo do volume 1.
3030
Tipagem ganso (_goose typing_)::
3131
A((("goose typing", "definition of term"))) abordagem suportada pelas classes base abstratas
3232
(ABCs, _sigla em inglês para Abstract Base Classes_) desde Python 2.6,
3333
que depende de checar objetos contra ABCs durante a execução.
34-
A tipagem ganso é um dos principais temas desse capítulo.
34+
A tipagem ganso é um dos principais temas deste capítulo.
3535
Tipagem estática::
3636
A((("static typing"))) abordagem tradicional das linguagens de tipos estáticos como C e Java;
3737
suportada desde o Python 3.5 pelo módulo `typing`,
3838
e aplicada por checadores de tipos externos compatíveis com a
3939
https://fpy.li/pep484[PEP 484—Type Hints].
40-
Este não é o foco desse capítulo.
40+
Este não é o foco deste capítulo.
4141
A maior parte do <<ch_type_hints_def>> e do <<ch_more_types>>
4242
mais adiante são sobre tipagem estática.
4343
Tipagem pato estática (_static duck typing_)::
@@ -54,7 +54,7 @@ As((("interfaces", "typing map")))((("typing map"))) quatro abordagens retratada
5454
<<type_systems_described>> são complementares: elas têm diferentes prós e contras.
5555
Não faz sentido descartar qualquer uma delas.
5656

57-
Cada uma dessas quatro abordagens dependem de interfaces para funcionarem, mas a
57+
Cada uma dessas quatro abordagens depende de interfaces para funcionar, mas a
5858
tipagem estática pode ser implementada de forma limitada usando apenas tipos
5959
concretos em vez de abstrações de interfaces como protocolos e classes base
6060
abstratas.
@@ -66,14 +66,13 @@ capítulo está dividido em quatro seções principais, tratando de três dos qu
6666
quadrantes no Mapa de Sistemas de Tipagem. (<<type_systems_described>>):
6767

6868
* A <<two_kinds_protocols_sec>> compara duas formas de tipagem estrutural com
69-
protocolos +
70-
—o lado esquerdo do Mapa.
69+
protocolos—o lado esquerdo do Mapa.
7170

72-
* A <<prog_ducks_sec>> se aprofunda na tipagem pato que já é familiar para
71+
* A <<prog_ducks_sec>> se aprofunda na tipagem pato, que já é familiar para
7372
quem programa em Python. Vamos ver como fazê-la mais segura,
7473
preservando sua melhor qualidade: a flexibilidade.
7574

76-
* A <<goose_typing_sec>> explica o uso de ABCs para um checagem de tipo mais
75+
* A <<goose_typing_sec>> explica o uso de ABCs para uma checagem de tipo mais
7776
estrita durante a execução do código. É a seção mais longa, não por ser a mais
7877
importante, mas porque há mais seções sobre tipagem pato, tipagem pato estática e
7978
tipagem estática em outras partes do livro.
@@ -100,7 +99,7 @@ conteúdo novo—e de todos os outros capítulos relacionados à tipagem em Pyth
10099
* A <<two_kinds_protocols_sec>> explica as semelhanças e diferenças entre
101100
protocolos dinâmicos e estáticos.
102101

103-
* A <<defensive_duck_prog_sec>> praticamente reproduz o conteúdo da primeira
102+
* A <<defensive_duck_prog_sec>> reproduz praticamente o conteúdo da primeira
104103
edição, mas foi atualizada e agora tem um título de seção que enfatiza sua
105104
importância.
106105

@@ -112,7 +111,7 @@ para incluir a `Collection` ABC, do Python 3.6.
112111

113112
Na primeira edição de _Python Fluente_ escrevi uma seção encorajando o uso das ABCs
114113
do módulo `numbers` para tipagem ganso.
115-
Na <<numbers_abc_proto_sec>> explico porque, atualmente, é melhor usar
114+
Na <<numbers_abc_proto_sec>> explico por que, atualmente, é melhor usar
116115
protocolos numéricos estáticos do módulo `typing` como `SupportsFloat` se
117116
você planeja usar checadores de tipos estáticos, ou checagem durante a execução
118117
no estilo da tipagem ganso.
@@ -228,7 +227,7 @@ precise de todos eles.
228227
* Protocolos estáticos podem ser inspecionados por checadores de tipos
229228
estáticos, protocolos dinâmicos não.
230229

231-
Os dois tipos de protocolo compartilham um característica essencial: uma classe
230+
Os dois tipos de protocolo compartilham uma característica essencial: uma classe
232231
nunca precisa declarar que suporta um protocolo pelo nome, isto é, por herança.
233232

234233
Antes dos protocolos estáticos, Python já oferecia outra forma de definir uma
@@ -267,7 +266,7 @@ image::../images/flpy_1302.png[align="center",pdfwidth=10cm]
267266

268267
[TIP]
269268
====
270-
A maior parte das ABCs no módulo `collections.abc` existem para formalizar
269+
A maior parte das ABCs no módulo `collections.abc` existe para formalizar
271270
interfaces que já eram implementadas por objetos nativos e implicitamente
272271
suportadas pelo interpretador, muito antes daquele módulo existir.
273272
As ABCs são úteis como pontos de partida para novas classes, e
@@ -312,15 +311,15 @@ especial que Python dá a qualquer estrutura vagamente semelhante a uma
312311
sequência. O protocolo iterável em Python representa uma forma extrema de tipagem pato:
313312
o interpretador tenta dois métodos diferentes para iterar sobre objetos.
314313

315-
Para deixar mais claro, os comportamentos que que descrevi nessa seção estão
314+
Para deixar mais claro, os comportamentos que descrevi nessa seção estão
316315
implementados no próprio interpretador, na maioria dos casos em C. Eles não
317316
dependem dos métodos da ABC `Sequence`. Por exemplo, os métodos concretos
318317
`+__iter__+` e `+__contains__+` na classe `Sequence` emulam comportamentos
319318
internos do interpretador Python. Se tiver curiosidade, veja o código-fonte
320319
destes métodos em https://fpy.li/13-3[_Lib/_collections_abc.py_].
321320

322321
Agora vamos estudar um exemplo que demonstra por que checadores de tipos
323-
estáticos não têm lidar com protocolos
322+
estáticos não têm como lidar com protocolos
324323
dinâmicos.((("", startref="Pseqit13")))((("", startref="seqpro13")))((("",
325324
startref="itpro13")))
326325

@@ -342,7 +341,7 @@ como módulos, classes e funções.
342341
Vamos fazer _monkey patch_ na classe `FrenchDeck` do <<ex_pythonic_deck_repeat>>
343342
para superar uma grande limitação: ela não pode ser embaralhada. Anos atrás,
344343
quando escrevi pela primeira vez o exemplo `FrenchDeck`, implementei um método
345-
`shuffle`. Depois tive um insight pythônico: se um `FrenchDeck` funciona como
344+
`shuffle`. Depois tive uma sacada pythônica: se um `FrenchDeck` funciona como
346345
uma sequência, não precisa ter um método `shuffle`, pois já existe a função
347346
`random.shuffle`, que "embaralha a sequência x internamente" conforme a
348347
https://fpy.li/6m[documentação oficial].
@@ -385,10 +384,10 @@ TypeError: 'FrenchDeck' object does not support item assignment
385384
----
386385
====
387386

388-
A mensagem de erro é clara: `O objeto 'FrenchDeck' não suporta a atribuição de
389-
itens`. O problema é que +shuffle+ opera _internamente_, trocando os itens de
387+
A mensagem de erro é clara: "o objeto 'FrenchDeck' não suporta a atribuição de
388+
itens". O problema é que `shuffle` opera internamente, trocando os itens de
390389
lugar dentro da coleção, mas `FrenchDeck` só implementa o protocolo de sequência
391-
_imutável_. Para ser uma sequências mutável, `FrenchDeck` precisa oferecer um
390+
imutável. Para ser uma sequência mutável, `FrenchDeck` precisa oferecer um
392391
método `+__setitem__+`.
393392

394393
Como Python é dinâmico, podemos consertar isso durante a execução, até mesmo no
@@ -423,10 +422,14 @@ https://fpy.li/6n[Emulando tipos contêineres].
423422
Aqui nomeei os argumentos `deck, position, card`&#x2014;e não `self, key, value` como na
424423
referência da linguagem—para mostrar que todo método Python começa sua vida como
425424
uma função comum, e nomear o primeiro argumento `self` é só uma convenção.
426-
Fujir da convenção é OK em uma sessão no console onde o código é descartável,
425+
Fugir da convenção é OK em uma sessão no console onde o código é descartável,
427426
mas em um arquivo de código-fonte de Python é muito melhor usar
428427
`self`, `key`, e `value`, seguindo a documentação.
429428

429+
////
430+
PAREI
431+
////
432+
430433
O truque é que `set_card` pressupõe que o `deck` tem um atributo chamado
431434
`+_cards+`, e seu valor deve ser uma sequência mutável. A função `set_cards` é
432435
então anexada à classe `FrenchDeck` class como o método especial

0 commit comments

Comments
 (0)