Skip to content

Commit cd69bb8

Browse files
committed
vol2: xrefs simples para outros capítulos
1 parent 7c85681 commit cd69bb8

File tree

12 files changed

+58
-50
lines changed

12 files changed

+58
-50
lines changed

online/cap08.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1529,7 +1529,7 @@ Uma função deve ser mais precisa sobre o tipo concreto que retorna.
15291529

15301530
O tipo `Iterator`, usado como tipo do retorno no <<charindex_ex>>,
15311531
está intimamente relacionado a `Iterable`.
1532-
Voltaremos a ele em <<ch_generators>>, que trata de geradores e
1532+
Voltaremos a ele no <<ch_generators>>, que trata de geradores e
15331533
iteradores clássicos.((("", startref="GTSiterable08")))((("", startref="iterable08")))
15341534

15351535
[[param_generics_typevar_sec]]

online/cap11.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,8 +1275,8 @@ mas torna a classe mais fácil de testar.
12751275

12761276
Ao expandir o código do `Vector2d` meu objetivo foi criar um contexto para a
12771277
discussão dos métodos especiais e outras convenções de programação em Python.
1278-
Os exemplos neste capítulo demonstraram vários dos métodos especiais vistos
1279-
antes na <<special_names_tbl>> (<<ch_data_model>>):
1278+
Os exemplos neste capítulo demonstraram vários dos métodos especiais mencionados
1279+
no https://fpy.li/1[«Capítulo 1»] (vol.1):
12801280

12811281
* Métodos de representação de strings e bytes: `+__repr__+`, `+__str__+`,
12821282
`+__format__+` e `+__bytes__+`

online/cap13.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -997,7 +997,7 @@ facilitar a criação de subclasses de `Iterable`, `Container`, e `Sized`.
997997
Esses são os principais tipos de coleções imutáveis, e cada um tem uma subclasse
998998
mutável. Um diagrama detalhado de `MutableSequence` é apresentado na
999999
<<mutablesequence_uml>>; para `MutableMapping` e `MutableSet`, veja a
1000-
<<mapping_uml>> e a <<set_uml>> em <<ch_dicts_sets>>.
1000+
<<mapping_uml>> e a <<set_uml>> no <<ch_dicts_sets>>.
10011001

10021002
`MappingView`::
10031003
No Python 3, os objetos devolvidos pelos métodos de mapeamentos `.items()`,
@@ -1008,7 +1008,7 @@ implementam a rica interface de `Set`, com todos os operadores que vimos na
10081008

10091009
`Iterator`::
10101010
Observe que iterator é subclasse de `Iterable`.
1011-
Discutiremos este detalhe em <<ch_generators>>.
1011+
Discutiremos este detalhe no <<ch_generators>>.
10121012

10131013
`Callable`, `Hashable`::
10141014
Estas não são coleções, mas `collections.abc` foi o primeiro pacote a definir
@@ -1039,7 +1039,7 @@ Essa chamada vai levantar um `TypeError` se `obj` não for _hashable_.
10391039
10401040
Por outro lado, mesmo quando `isinstance(obj, Iterable)` retorna `False`,
10411041
o Python ainda pode ser capaz de iterar sobre `obj` usando `+__getitem__+`
1042-
com índices baseados em 0, como vimos em <<ch_data_model>> e
1042+
com índices baseados em 0, como vimos no <<ch_data_model>> e
10431043
na <<python_digs_seq_sec>>. A documentação de
10441044
https://fpy.li/6q[`collections.abc.Iterable`]
10451045
afirma:

print/xrefs/xref-other-vols.ipynb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,15 @@
8383
},
8484
{
8585
"cell_type": "code",
86-
"execution_count": 18,
86+
"execution_count": 21,
8787
"id": "546fd140-6977-469a-8e32-c7497f09dc27",
8888
"metadata": {},
8989
"outputs": [],
9090
"source": [
9191
"# duas xrefs:\n",
9292
"# A maior parte do <<ch_type_hints_def>> e do <<ch_more_types>>\n",
9393
"\n",
94-
"for cap_n in range(13, 14):\n",
94+
"for cap_n in range(9, 17):\n",
9595
" with open(path_adoc(cap_n)) as fp:\n",
9696
" adoc = fp.read()\n",
9797
" for ident, (vol, cap) in other_vols.items():\n",
@@ -109,6 +109,14 @@
109109
"metadata": {},
110110
"outputs": [],
111111
"source": []
112+
},
113+
{
114+
"cell_type": "code",
115+
"execution_count": null,
116+
"id": "552c2fa0-ff72-404b-a7b1-868273c38cb9",
117+
"metadata": {},
118+
"outputs": [],
119+
"source": []
112120
}
113121
],
114122
"metadata": {

vol2/cap09.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ Um decorador pode executar algum processamento com a função decorada, e pode
9191
devolver a mesma função ou substituí-la por outra função ou objeto invocável.footnote:[Se
9292
você substituir "função" por "classe" na sentença anterior, o resultado é uma
9393
descrição resumida do papel de um decorador de classe, assunto que veremos no
94-
<<ch_class_metaprog>>.]
94+
https://fpy.li/24[«Capítulo 24»] (vol.3).]
9595

9696
Em outras palavras, supondo a existência de uma função decoradora
9797
chamada `decorate`, este código:
@@ -1525,7 +1525,7 @@ decorada com `clocked`.
15251525
<4> `clocked` envolve a função decorada.
15261526

15271527
Isso encerra nossa exploração dos decoradores de função. Veremos os decoradores
1528-
de classe no <<ch_class_metaprog>>.((("", startref="DACparam09")))((("",
1528+
de classe no https://fpy.li/24[«Capítulo 24»] (vol.3).((("", startref="DACparam09")))((("",
15291529
startref="paramdec09")))
15301530

15311531

@@ -1580,7 +1580,7 @@ no módulo https://fpy.li/9-7[`wrapt`], que ele escreveu para simplificar a
15801580
implementação de decoradores e invólucros (_wrappers_) dinâmicos de função,
15811581
que suportam introspecção e se comportam de forma correta quando decorados
15821582
novamente, quando aplicados a métodos e quando usados como descritores de
1583-
atributos (o <<ch_descriptors>> é sobre descritores).
1583+
atributos (o https://fpy.li/23[«Capítulo 23»] (vol.3) é sobre descritores).
15841584

15851585
https://fpy.li/9-8["Metaprogramming" (_Metaprogramação_)] (EN), o capítulo 9 do
15861586
_Python Cookbook_, 3ª ed. de David Beazley e Brian K. Jones (O'Reilly), tem

vol2/cap10.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ também em outras linguagens orientadas a objetos.
3030

3131
Apesar dos padrões de projeto serem independentes da linguagem, isso não
3232
significa que todo padrão se aplica a todas as linguagens. Por exemplo, o
33-
<<ch_generators>> vai mostrar que não faz sentido implementr a receita do padrão
33+
https://fpy.li/17[«Capítulo 17»] (vol.3) vai mostrar que não faz sentido implementr a receita do padrão
3434
https://fpy.li/10-2[Iterador (_Iterator_)] em Python, pois esse padrão está
3535
embutido na linguagem e pronto para ser usado, na forma de geradores—que não
3636
precisam de classes para funcionar, e exigem menos código que a receita

vol2/cap11.adoc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ usarão suas classes talvez esperem que elas se comportem como as classes
2626
fornecidas pelo Python. Satisfazer tal expectativa é um dos jeitos de ser
2727
"pythônico".
2828

29-
Esse capítulo começa onde o <<ch_data_model>> terminou, mostrando como
29+
Esse capítulo começa onde o https://fpy.li/1[«Capítulo 1»] (vol.1) terminou, mostrando como
3030
implementar vários métodos especiais comumente vistos em objetos Python de
3131
diferentes tipos.
3232

@@ -85,7 +85,7 @@ string representando o objeto de uma forma amigável para o usuário final.
8585

8686
Os((("&#x005F;&#x005F;repr&#x005F;&#x005F;")))((("&#x005F;&#x005F;str&#x005F;&#x005F;")))
8787
métodos especiais `+__repr__+` e `+__str__+` suportam `repr()` e `str()`, como
88-
vimos no <<ch_data_model>>.
88+
vimos no https://fpy.li/1[«Capítulo 1»] (vol.1).
8989

9090
Existem((("&#x005F;&#x005F;bytes&#x005F;&#x005F;")))((("&#x005F;&#x005F;format&#x005F;&#x005F;")))
9191
mais dois métodos especiais para gerar representações alternativas de
@@ -112,7 +112,7 @@ Se você está vindo de Python 2, lembre-se que no Python 3
112112
Para((("Pythonic objects", "Vector2d class example",
113113
id="PYvector11")))((("Vector2d", "class example", id="V2dclass11"))) demonstrar
114114
os vários métodos usados para gerar representações de objetos, vamos criar uma
115-
classe `Vector2d`, similar à que vimos no <<ch_data_model>>. O
115+
classe `Vector2d`, similar à que vimos no https://fpy.li/1[«Capítulo 1»] (vol.1). O
116116
<<ex_vector2d_v0_demo>> ilustra o comportamento básico que esperamos de uma
117117
instância de `Vector2d`.
118118

@@ -166,7 +166,7 @@ funcionar (por exemplo, `x, y = my_vector`). Usamos uma
166166
expressão geradora para produzir os dois componentes, um após outro.footnote:[Essa
167167
linha também poderia ser escrita assim: `yield self.x; yield.self.y`. Terei mais
168168
a dizer sobre o método especial `+__iter__+`, sobre expressões geradoras e sobre
169-
a palavra reservada `yield` no <<ch_generators>>.]
169+
a palavra reservada `yield` no https://fpy.li/17[«Capítulo 17»] (vol.3).]
170170

171171
<4> O `+__repr__+` cria uma string interpolando os componentes com `{!r}`, para
172172
obter seus `repr`; como `Vector2d` é iterável, `*self` alimenta `format` com os
@@ -629,7 +629,7 @@ código da classe.
629629
====
630630
631631
`Vector.x` e `Vector.y` são exemplos de propriedades apenas para leitura.
632-
Propriedades para leitura/escrita serão tratadas no <<ch_dynamic_attrs>>, onde
632+
Propriedades para leitura/escrita serão tratadas no https://fpy.li/22[«Capítulo 22»] (vol.3), onde
633633
mergulhamos mais fundo no decorador `@property`.
634634
635635
====
@@ -1275,8 +1275,8 @@ mas torna a classe mais fácil de testar.
12751275

12761276
Ao expandir o código do `Vector2d` meu objetivo foi criar um contexto para a
12771277
discussão dos métodos especiais e outras convenções de programação em Python.
1278-
Os exemplos neste capítulo demonstraram vários dos métodos especiais vistos
1279-
antes na <<special_names_tbl>> (<<ch_data_model>>):
1278+
Os exemplos neste capítulo demonstraram vários dos métodos especiais mencionados
1279+
no https://fpy.li/1[«Capítulo 1»] (vol.1):
12801280

12811281
* Métodos de representação de strings e bytes: `+__repr__+`, `+__str__+`,
12821282
`+__format__+` e `+__bytes__+`
@@ -1334,7 +1334,7 @@ ____
13341334

13351335
Este((("Pythonic objects", "further reading on"))) capítulo tratou de vários dos
13361336
métodos especiais do modelo de dados, então naturalmente as referências
1337-
primárias são as mesmas do <<ch_data_model>>, onde tivemos uma ideia geral do
1337+
primárias são as mesmas do https://fpy.li/1[«Capítulo 1»] (vol.1), onde tivemos uma ideia geral do
13381338
mesmo tópico. Por conveniência, vou repetir aquelas quatro recomendações
13391339
anteriores aqui, e acrescentar algumas outras:
13401340

@@ -1368,7 +1368,7 @@ classes*, liberando você do tedioso trabalho de implementar protocolos de objet
13681368
____
13691369

13701370
Mencionei `attrs` como uma alternativa mais poderosa ao `@dataclass` na
1371-
<<dataclass_further_sec>>. As fábricas de classes de dados do <<ch_dataclass>>,
1371+
<<dataclass_further_sec>>. As fábricas de classes de dados do https://fpy.li/5[«Capítulo 5»] (vol.1),
13721372
assim como `attrs`, automaticamente equipam suas classes com vários métodos
13731373
especiais. Mas saber como programar métodos especiais ainda é essencial para
13741374
entender o que aqueles pacotes fazem, para decidir se você realmente precisa

vol2/cap12.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ include::../code/12-seq-hacking/vector_v1.py[tags=VECTOR_V1]
134134
com os componentes do `Vector`.
135135

136136
<2> Para permitir iteração, devolvemos um itereador sobre
137-
`self._components`; a função `iter()` é assunto do <<ch_generators>>,
137+
`self._components`; a função `iter()` é assunto do https://fpy.li/17[«Capítulo 17»] (vol.3),
138138
juntamente com o método `+__iter__+`.
139139

140140
<3> Usa `reprlib.repr()` para obter um representação de tamanho limitado de
@@ -1069,7 +1069,7 @@ sobre a magnitude e as coordenadas angulares.
10691069
Usamos intensivamente expressões geradoras em `+__format__+`, `angle`, e
10701070
`angles`, mas nosso foco aqui é fornecer um `+__format__+` para levar `Vector`
10711071
ao mesmo nível de implementação de `Vector2d`. Quando tratarmos de geradores, no
1072-
<<ch_generators>>, vamos usar parte do código de `Vector` nos exemplos, e lá
1072+
https://fpy.li/17[«Capítulo 17»] (vol.3), vamos usar parte do código de `Vector` nos exemplos, e lá
10731073
o funcionamento dos geradores será explicado em detalhes.
10741074
====
10751075

@@ -1121,7 +1121,7 @@ O último aperfeiçoamento a `Vector` foi reimplementar o método `+__format__+`
11211121
`Vector2d`, para suportar coordenadas esféricas como alternativa às coordenadas
11221122
cartesianas default. Usamos alguma matemática e vários geradores para
11231123
programar `+__format__+` e suas funções auxiliares, mas esses são detalhes de
1124-
implementação. Voltaremos aos geradores no <<ch_generators>>. O objetivo
1124+
implementação. Voltaremos aos geradores no https://fpy.li/17[«Capítulo 17»] (vol.3). O objetivo
11251125
daquela última seção foi suportar um formato customizado, cumprindo assim a
11261126
promessa de um `Vector` capaz de fazer tudo que um `Vector2d` faz, e algo mais.
11271127

vol2/cap13.adoc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ A programação orientada a objetos((("interfaces", "role in object-oriented pro
1414
tem tudo a ver com interfaces.
1515
A melhor forma de entender um tipo em Python é conhecer os métodos que
1616
aquele tipo oferece—sua interface—como vimos na
17-
<<types_defined_by_ops_sec>> (<<ch_type_hints_def>>).
17+
<<types_defined_by_ops_sec>> (https://fpy.li/8[«Capítulo 8»] (vol.1)).
1818
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

@@ -38,13 +38,13 @@ Tipagem estática::
3838
e aplicada por checadores de tipos externos compatíveis com a
3939
https://fpy.li/pep484[PEP 484—Type Hints].
4040
Este não é o foco deste capítulo.
41-
A maior parte do <<ch_type_hints_def>> e do <<ch_more_types>>
41+
A maior parte do https://fpy.li/8[«Capítulo 8»] (vol.1) e do <<ch_more_types>>
4242
mais adiante são sobre tipagem estática.
4343
Tipagem pato estática (_static duck typing_)::
4444
Uma((("static duck typing"))) abordagem popularizada pela linguagem Go;
4545
suportada por subclasses de `typing.Protocol`—lançada no Python 3.8 e também
4646
aplicada com o suporte de checadores de tipos externos. Tratamos desse tema
47-
pela primeira vez em <<protocols_in_fn_sec>> (<<ch_type_hints_def>>), e
47+
pela primeira vez em <<protocols_in_fn_sec>> (https://fpy.li/8[«Capítulo 8»] (vol.1)), e
4848
continuamos neste capítulo.
4949

5050

@@ -104,7 +104,7 @@ edição, mas foi atualizada e agora tem um título de seção que enfatiza sua
104104
importância.
105105

106106
* A <<static_protocols_sec>> é toda nova. Ela se apoia na apresentação inicial na
107-
<<protocols_in_fn_sec>> (<<ch_type_hints_def>>).
107+
<<protocols_in_fn_sec>> (https://fpy.li/8[«Capítulo 8»] (vol.1)).
108108

109109
* Os diagramas de classe de `collections.abc` neste capítulo foram atualizados
110110
para incluir a `Collection` ABC, do Python 3.6.
@@ -129,7 +129,7 @@ servidor, como `GET`, `PUT` e `HEAD`.
129129
Vimos na <<protocol_duck_sec>> que um protocolo especifica métodos
130130
que um objeto precisa oferecer para cumprir um papel.
131131

132-
O exemplo `FrenchDeck` no <<ch_data_model>> demonstra um protocolo, o
132+
O exemplo `FrenchDeck` no https://fpy.li/1[«Capítulo 1»] (vol.1) demonstra um protocolo, o
133133
protocolo de sequência: os métodos que permitem a um objeto Python se comportar
134134
como uma sequência.
135135

@@ -197,7 +197,7 @@ Agora, com a adoção da
197197
https://fpy.li/pep544[_PEP 544—Protocols: Structural subtyping (static duck typing)_]
198198
no Python 3.8, a palavra "protocolo" ganhou um novo sentido em Python—um sentido próximo,
199199
mas diferente.
200-
Como vimos na <<protocols_in_fn_sec>> (<<ch_type_hints_def>>),
200+
Como vimos na <<protocols_in_fn_sec>> (https://fpy.li/8[«Capítulo 8»] (vol.1)),
201201
a PEP 544 nos permite criar subclasses de `typing.Protocol` para definir
202202
um ou mais métodos que uma classe
203203
deve implementar (ou herdar) para satisfazer um checador de tipos estático.
@@ -293,7 +293,7 @@ Em resumo, dada a importância das sequências como estruturas de dados, Python
293293
fazer a iteração e o operador `in` funcionarem invocando `+__getitem__+` quando
294294
`+__iter__+` e `+__contains__+` não estão presentes.
295295

296-
O `FrenchDeck` original do <<ch_data_model>> também não é subclasse de
296+
O `FrenchDeck` original do https://fpy.li/1[«Capítulo 1»] (vol.1) também não é subclasse de
297297
`abc.Sequence`, mas ele implementa os dois métodos do protocolo de sequência:
298298
`+__getitem__+` e `+__len__+`. Veja o <<ex_pythonic_deck_repeat>>.
299299

@@ -306,7 +306,7 @@ include::../code/01-data-model/frenchdeck.py[]
306306
----
307307
====
308308

309-
Muitos dos exemplos no <<ch_data_model>> funcionam por causa do tratamento
309+
Muitos dos exemplos no https://fpy.li/1[«Capítulo 1»] (vol.1) funcionam por causa do tratamento
310310
especial que Python dá a estruturas vagamente semelhantes a uma sequência.
311311
O protocolo iterável em Python representa uma forma extrema de tipagem pato:
312312
o interpretador tenta dois métodos diferentes para iterar sobre objetos.
@@ -997,7 +997,7 @@ facilitar a criação de subclasses de `Iterable`, `Container`, e `Sized`.
997997
Esses são os principais tipos de coleções imutáveis, e cada um tem uma subclasse
998998
mutável. Um diagrama detalhado de `MutableSequence` é apresentado na
999999
<<mutablesequence_uml>>; para `MutableMapping` e `MutableSet`, veja a
1000-
<<mapping_uml>> e a <<set_uml>> em <<ch_dicts_sets>>.
1000+
<<mapping_uml>> e a <<set_uml>> em https://fpy.li/3[«Capítulo 3»] (vol.1).
10011001

10021002
`MappingView`::
10031003
No Python 3, os objetos devolvidos pelos métodos de mapeamentos `.items()`,
@@ -1008,7 +1008,7 @@ implementam a rica interface de `Set`, com todos os operadores que vimos na
10081008

10091009
`Iterator`::
10101010
Observe que iterator é subclasse de `Iterable`.
1011-
Discutiremos este detalhe em <<ch_generators>>.
1011+
Discutiremos este detalhe em https://fpy.li/17[«Capítulo 17»] (vol.3).
10121012

10131013
`Callable`, `Hashable`::
10141014
Estas não são coleções, mas `collections.abc` foi o primeiro pacote a definir
@@ -1039,7 +1039,7 @@ Essa chamada vai levantar um `TypeError` se `obj` não for _hashable_.
10391039
10401040
Por outro lado, mesmo quando `isinstance(obj, Iterable)` retorna `False`,
10411041
o Python ainda pode ser capaz de iterar sobre `obj` usando `+__getitem__+`
1042-
com índices baseados em 0, como vimos em <<ch_data_model>> e
1042+
com índices baseados em 0, como vimos em https://fpy.li/1[«Capítulo 1»] (vol.1) e
10431043
na <<python_digs_seq_sec>>. A documentação de
10441044
https://fpy.li/6q[`collections.abc.Iterable`]
10451045
afirma:
@@ -1380,7 +1380,7 @@ E mesmo quando recebemos uma lista no argumento `iterable`,
13801380
considerando que vamos remover itens da lista,
13811381
e o cliente pode não estar esperando
13821382
que a lista passada seja modificada.footnote:[<<defensive_argument>>
1383-
(<<ch_refs_mut_mem>>) trata do problema de apelidamento
1383+
(https://fpy.li/6[«Capítulo 6»] (vol.1)) trata do problema de apelidamento
13841384
que acabamos de evitar aqui.]
13851385

13861386
Chegamos agora à característica dinâmica da tipagem ganso:
@@ -2482,7 +2482,7 @@ reconhecimento de classes não-relacionadas, mas que fornecem os métodos
24822482
exigidos pela interface declarada na ABC.
24832483

24842484
Retomamos o estudo da tipagem pato estática na <<static_protocols_sec>>, que
2485-
havia começado no <<ch_type_hints_def>>, em <<protocols_in_fn_sec>>. Vimos como
2485+
havia começado no https://fpy.li/8[«Capítulo 8»] (vol.1), em <<protocols_in_fn_sec>>. Vimos como
24862486
o decorador `@runtime_checkable` também aproveita o `+__subclasshook__+` para
24872487
suportar tipagem estrutural durante a execução—mesmo que o melhor uso dos
24882488
protocolos estáticos seja com checadores de tipos estáticos, que podem levar em
@@ -2556,7 +2556,7 @@ O _Python Cookbook_, 3rd ed. de Beazley & Jones (O'Reilly) tem uma seção sobre
25562556
como definir uma ABC (Recipe 8.12). O livro foi escrito antes de Python 3.4,
25572557
então eles não usam a atual sintaxe preferida para declarar ABCs, criar uma
25582558
subclasse de `abc.ABC` (em vez disso, eles usam a palavra-chave `metaclass`, da
2559-
qual só vamos precisar mesmo no <<ch_class_metaprog>>). Tirando esse pequeno
2559+
qual só vamos precisar mesmo no https://fpy.li/24[«Capítulo 24»] (vol.3)). Tirando esse pequeno
25602560
detalhe, a receita cobre os principais recursos das ABCs muito bem.
25612561

25622562
_The Python Standard Library by Example_ de Doug Hellmann (Addison-Wesley), tem

vol2/cap14.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,12 +371,12 @@ Herdando de `collections.UserDict` em vez de `dict`, os problemas expostos no
371371

372372
Como um experimento, para medir o trabalho extra necessário para criar uma
373373
subclasse de um tipo embutido, reescrevi a classe `StrKeyDict` do
374-
<<ex_strkeydict>> (<<ch_dicts_sets>>),
374+
<<ex_strkeydict>> (https://fpy.li/3[«Capítulo 3»] (vol.1)),
375375
para torná-la uma subclasse de `dict` em vez de `UserDict`.
376376
Para fazê-la passar pelo mesmo banco de testes, tive que implementar
377377
`+__init__+`, `get`, e `update`, pois as versões herdadas de `dict` se recusaram
378378
a cooperar com os métodos sobrescritos `+__missing__+`, `+__contains__+` e
379-
`+__setitem__+`. A subclasse de `UserDict` no <<ex_strkeydict>> do <<ch_dicts_sets>>
379+
`+__setitem__+`. A subclasse de `UserDict` no <<ex_strkeydict>> do https://fpy.li/3[«Capítulo 3»] (vol.1)
380380
tem 16 linhas, enquanto a subclasse experimental de `dict` acabou com 33 linhas.footnote:[Se
381381
você tiver curiosidade, o experimento está no arquivo
382382
https://fpy.li/14-7[_14-inheritance/strkeydict_dictsub.py_] do repositório
@@ -1413,7 +1413,7 @@ Knight. A resposta de Martijn Pieters a
14131413
https://fpy.li/14-41[_How to use super() with one argument?_]
14141414
(Como usar super() com um só argumento?)
14151415
inclui uma explicação concisa e aprofundada de `super`, incluindo sua relação
1416-
com descritores, um conceito que estudaremos apenas no <<ch_descriptors>>.
1416+
com descritores, um conceito que estudaremos apenas no https://fpy.li/23[«Capítulo 23»] (vol.3).
14171417
Assim é `super`: simples de usar nos casos básicos, mas também
14181418
uma ferramenta poderosa e complexa, que alcança alguns dos recursos dinâmicos
14191419
mais avançados de Python, raramente encontrados em outras linguagens.

0 commit comments

Comments
 (0)