Skip to content

Commit dd81892

Browse files
committed
estilo: possui->tem; irá fazer->fará
1 parent 379a32a commit dd81892

File tree

14 files changed

+39
-29
lines changed

14 files changed

+39
-29
lines changed

online/cap02.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,7 @@ Quando((("tuples", "versus lists", secondary-sortas="lists")))((("lists", "versu
638638
usamos uma tupla como uma variante imutável de `list`, é bom saber o quão similares são suas APIs.
639639
Como se pode ver na <<list_x_tuple_attrs_tbl>>,
640640
`tuple` suporta todos os métodos de `list` que não envolvem adicionar ou remover itens,
641-
com uma exceção—`tuple` não possui o método `+__reversed__+`.
641+
com uma exceção—`tuple` não tem o método `+__reversed__+`.
642642
Entretanto, `reversed(my_tuple)` funciona sem esse método; ele serve apenas para otimizar.
643643

644644
[[list_x_tuple_attrs_tbl]]

online/cap03.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ Na <<mappings_flexible_sec>>, vamos estudar o `defaultdict` e
293293
outros mapeamentos onde buscas com chaves via `+__getitem__+`
294294
(isto é, `d[chave]`) funcionam porque itens ausentes são criados na hora.
295295
No contexto do pattern matching,
296-
um match é bem sucedido apenas se o sujeito já possui as chaves necessárias no início do bloco `match`.
296+
um match é bem sucedido apenas se o sujeito já tem as chaves necessárias no início do bloco `match`.
297297

298298
[TIP]
299299
====
@@ -448,7 +448,7 @@ A <<mapping_methods_tbl>> mostra os métodos implementados por `dict` e pelas va
448448

449449
A forma como `d.update(m)` lida com seu primeiro argumento, `m`,
450450
é um excelente exemplo((("duck typing"))) de _duck typing_ (_tipagem pato_):
451-
ele primeiro verifica se `m` possui um método `keys` e, em caso afirmativo,
451+
ele primeiro verifica se `m` tem um método `keys` e, em caso afirmativo,
452452
assume que `m` é um mapeamento.
453453
Caso contrário, `update()` reverte para uma iteração sobre `m`,
454454
presumindo que seus item são pares `(chave, valor)`.

online/cap04.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ causando muitas dores de cabeça nos desenvolvedores que lidam com dados binári
215215
A decisão está documentada na
216216
https://fpy.li/pep461[PEP 461--Adding % formatting to bytes and bytearray (_Acrescentando formatação com % a bytes e bytearray_)]. (EN)]
217217

218-
As sequências binárias têm um método de classe que `str` não possui, chamado `fromhex`,
218+
As sequências binárias têm um método de classe que `str` não tem, chamado `fromhex`,
219219
que cria uma sequência binária a partir da análise de pares de dígitos hexadecimais,
220220
separados opcionalmente por espaços:
221221

online/cap05.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,7 @@ Vamos examinar uma instância de `DemoNTClass`:
751751
Para criar `nt`, precisamos passar pelo menos o argumento `a` para `DemoNTClass`.
752752
O construtor também aceita um argumento `b`,
753753
mas como este último tem um valor default (de `1.1`), ele é opcional.
754-
Como esperado, o objeto `nt` possui os atributos `a` e `b`;
754+
Como esperado, o objeto `nt` tem os atributos `a` e `b`;
755755
ele não tem um atributo `c`, mas Python obtém `c` da classe, como de hábito.
756756

757757
Se você tentar atribuir valores para `nt.a`, `nt.b`, `nt.c`, ou mesmo para `nt.z`,
@@ -1790,7 +1790,7 @@ Entre outras coisas, ele diz:
17901790
[quote]
17911791
____
17921792
Diz a lenda que o atributo mais importante de Guido, além do próprio Python,
1793-
é a máquina do tempo de Guido, um aparelho que dizem que ele possui por causa da
1793+
é a máquina do tempo de Guido, um aparelho que dizem que ele tem por causa da
17941794
frequência irritante com que pedidos de usuários por novos recursos
17951795
recebem como resposta "Acabei de implementar isso noite passada..."
17961796
____

online/cap08.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ def double(x: abc.Sequence):
483483
return x * 2
484484
----
485485

486-
Um checador de tipos irá rejeitar esse código.
486+
Um checador de tipos rejeitará este código.
487487
Se você informar ao Mypy que `x` é do tipo `abc.Sequence`, ele vai marcar `x * 2` como erro,
488488
pois a https://fpy.li/8-13[`Sequence` ABC] não implementa ou herda o método `+__mul__+`.
489489
Durante a execução, o código vai funcionar com sequências concretas

online/cap16.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ reverso em sua classe.
552552
No espírito da tipagem pato, não vamos testar o tipo do operando `other` ou o
553553
tipo de seus elementos. Vamos capturar as exceções e devolver `NotImplemented`.
554554
Se o interpretador ainda não tiver invertido os operandos, tentará isso em seguida.
555-
Se a invocação do método reverso devolver `NotImplemented`, então Python irá
555+
Se a invocação do método reverso devolver `NotImplemented`, então Python vai
556556
gerar um `TypeError` com uma mensagem de erro padrão "unsupported operand
557557
type(s) for +: 'Vector' and 'str'” (_tipos de operandos não suportados para +:
558558
`Vector` e `str`_)

online/cap17.adoc

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ StopIteration
401401
<2> Obtém um iterador a partir de `s3`.
402402
<3> `next(it)` devolve a próxima palavra.
403403
<4> Não há mais palavras, então o iterador gera uma exceção `StopIteration`.
404-
<5> Uma vez exaurido, um itereador irá sempre gerar `StopIteration`, o que faz parecer que ele está vazio..
404+
<5> Uma vez exaurido, um itereador vai sempre gerar `StopIteration`, o que faz parecer que ele está vazio..
405405
<6> Para percorrer a sentença novamente é preciso criar um novo iterador.
406406
407407
Como os únicos métodos exigidos de um iterador são `+__next__+` e `+__iter__+`, não há como checar se há itens restantes, exceto invocando `next()` e capturando `StopIteration`.
@@ -470,8 +470,11 @@ Iteradores implementam um método `+__next__+`, que devolve itens individuais, e
470470
471471
Assim, iteradores também são iteráveis, mas iteráveis não são iteradores.
472472
473-
Pode ser tentador implementar `+__next__+` além de `+__iter__+` na classe `Sentence`, tornando cada instância de `Sentence` ao mesmo tempo um iterável e um iterador de si mesma.
474-
Mas raramente isso é uma boa ideia. Também é um anti-padrão comum, de acordo com Alex Martelli, que possui vasta experiência revisando código no Google.
473+
Pode ser tentador implementar `+__next__+` além de `+__iter__+` na classe
474+
`Sentence`, tornando cada instância de `Sentence` ao mesmo tempo um iterável e
475+
um iterador de si mesma. Mas raramente isso é uma boa ideia. Também é um
476+
anti-padrão comum, de acordo com Alex Martelli, que tem vasta experiência
477+
revisando código no Google.
475478
476479
A seção "Aplicabilidade" do padrão de projeto _Iterator_ no livro _Padrões de Projeto_ diz:
477480
@@ -1589,7 +1592,7 @@ BaseException
15891592
----
15901593
15911594
O próximo pequeno passo nos leva ao nível 1.
1592-
A geradora `tree` irá produzir o nome da classe raiz e os nomes de cada subclasse direta.
1595+
A geradora `tree` produzirá o nome da classe raiz e os nomes de cada subclasse direta.
15931596
Os nomes das subclasses são indentados para explicitar a hierarquia.
15941597
Esta é a saída que queremos:
15951598

online/cap19.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ A função `supervisor`, que aparece no <<spinner_thread_rest_ex>>, usa um `Even
283283
include::../code/19-concurrency/spinner_thread.py[tags=SPINNER_THREAD_REST]
284284
----
285285
====
286-
<1> `supervisor` irá retornar o resultado de `slow`.
286+
<1> `supervisor` retornará o resultado de `slow`.
287287
<2> A instância de `threading.Event` é a chave para coordenar as atividades das threads `main` e `spinner`, como explicado abaixo.
288288
<3> Para criar uma nova `Thread`, forneça uma função como argumento palavra-chave `target`, e argumentos posicionais para a `target` como uma tupla passada via `args`.
289289
<4> Mostra o objeto `spinner`. A saída é `<Thread(Thread-1, initial)>`, onde `initial`
@@ -377,7 +377,7 @@ include::../code/19-concurrency/spinner_async.py[tags=SPINNER_ASYNC_START]
377377
----
378378
====
379379
<1> `main` é a única função regular definida nesse programa—as outras são corrotinas.
380-
<2> A função`asyncio.run` inicia o loop de eventos para controlar a corrotina que irá em algum momento colocar as outras corrotinas em movimento.
380+
<2> A função`asyncio.run` inicia o loop de eventos para controlar a corrotina que em algum momento colocará as outras corrotinas em movimento.
381381
A função `main` ficará bloqueada até que `supervisor` retorne.
382382
O valor de retorno de `supervisor` será o valor de retorno de `asyncio.run`.
383383
<3> Corrotinas nativas são definidas com `async def`.

online/cap22.adoc

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ o método `keys` é um atributo do `dict` `__data`.
124124

125125
Uma instância de `FrozenJSON` contém um atributo de instância privado `+__data+`, armazenado sob o nome `++_FrozenJSON__data++`, como explicado na <<private_protected_sec>>.
126126
Tentativas de recuperar atributos por outros nomes vão disparar `+__getattr__+`.
127-
Esse método irá primeiro olhar se o `dict` `+self.__data+` contém um atributo (não uma chave!) com aquele nome; isso permite que instâncias de `FrozenJSON` tratem métodos de `dict` tal como `items`, delegando para `+self.__data.items()+`. Se `+self.__data+` não contiver uma atributo como o `name` dado, `+__getattr__+` usa `name` como chave para recuperar um item de `+self.__data+`, e passa aquele item para `FrozenJSON.build`. Isso permite navegar por estruturas aninhadas nos dados JSON, já que cada mapeamento aninhado é convertido para outra instância de `FrozenJSON` pelo método de classe `build`.
127+
Primeiro, esse método verá se o `dict` `+self.__data+` contém um atributo (não uma chave!) com aquele nome; isso permite que instâncias de `FrozenJSON` tratem métodos de `dict` tal como `items`, delegando para `+self.__data.items()+`. Se `+self.__data+` não contiver uma atributo como o `name` dado, `+__getattr__+` usa `name` como chave para recuperar um item de `+self.__data+`, e passa aquele item para `FrozenJSON.build`. Isso permite navegar por estruturas aninhadas nos dados JSON, já que cada mapeamento aninhado é convertido para outra instância de `FrozenJSON` pelo método de classe `build`.
128128

129129
Observe que `FrozenJSON` não transforma ou armazena o conjunto de dados original.
130130
Conforme navegamos pelos dados, `+__getattr__+` cria continuamente instâncias de `FrozenJSON`.
@@ -470,16 +470,23 @@ include::../code/22-dyn-attr-prop/oscon/schedule_v3.py[tags=SCHEDULE3_SPEAKERS]
470470
do `+__dict__+` da instância, para evitar uma chamada recursiva à propriedade `speakers`.
471471
<2> Devolve uma lista de todos os registros com chaves correspondendo aos números em `spkr_serials`.
472472

473-
Dentro do método `speakers`, tentar ler `self.speakers` irá invocar a própria propriedade, gerando rapidamente um `RecursionError`.
474-
Entretanto, se lemos os mesmos dados via `+self.__dict__['speakers']+`, o algoritmo normal de Python para busca e recuperação de atributos é ignorado, a propriedade não é chamada e a recursão é evitada.
475-
Por essa razão, ler ou escrever dados diretamente no `+__dict__+` de um objeto é um truque comum em metaprogramação no Python.
473+
Dentro do método `speakers`, uma tentativa de ler `self.speakers` invocará a
474+
mesma propriedade, gerando rapidamente um `RecursionError`. Entretanto,
475+
acessando via `+self.__dict__['speakers']+`, evitamos o algoritmo de Python para
476+
busca de atributos, a propriedade não é chamada e evitamos a recursão. Por esta
477+
razão, ler ou escrever dados diretamente no `+__dict__+` de um objeto é um
478+
truque comum em metaprogramação no Python.
476479

477480
[WARNING]
478481
====
479-
O interpretador avalia `+obj.my_attr+` olhando primeiro a classe de `obj`.
480-
Se a classe possuir uma propriedade de nome `my_attr`, aquela propriedade oculta um atributo de instância com o mesmo nome.
481-
Isso será demonstrado por exemplos na <<prop_override_instance>>,
482-
e o <<ch_descriptors>> vai revelar que uma propriedade é implementada como um descritor—uma abstração mais geral e poderosa.
482+
483+
O interpretador avalia `+obj.my_attr+` olhando primeiro a classe de `obj`. Se a
484+
classe tiver uma propriedade de nome `my_attr`, aquela propriedade oculta um
485+
atributo de instância com o mesmo nome. Isso será demonstrado por exemplos na
486+
<<prop_override_instance>>, e o <<ch_descriptors>> vai revelar que uma
487+
propriedade é implementada como um descritor—uma abstração mais geral e
488+
poderosa.
489+
483490
====
484491

485492
Quando programava a compreensão de lista no <<ex_schedule_v3_speakers>>, meu cérebro réptil de programador pensou: "Isso talvez seja custoso". Na verdade não é, porque os eventos no conjuntos de dados da OSCON contêm poucos palestrantes, então programar algo mais complexo seria uma otimização prematura.

vol1/cap02.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,7 @@ Quando((("tuples", "versus lists", secondary-sortas="lists")))((("lists", "versu
640640
usamos uma tupla como uma variante imutável de `list`, é bom saber o quão similares são suas APIs.
641641
Como se pode ver na <<list_x_tuple_attrs_tbl>>,
642642
`tuple` suporta todos os métodos de `list` que não envolvem adicionar ou remover itens,
643-
com uma exceção—`tuple` não possui o método `+__reversed__+`.
643+
com uma exceção—`tuple` não tem o método `+__reversed__+`.
644644
Entretanto, `reversed(my_tuple)` funciona sem esse método; ele serve apenas para otimizar.
645645

646646
<<<

0 commit comments

Comments
 (0)