@@ -14,7 +14,7 @@ A programação orientada a objetos((("interfaces", "role in object-oriented pro
1414tem tudo a ver com interfaces.
1515A melhor forma de entender um tipo em Python é conhecer os métodos que
1616aquele 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) ).
1818Desde o Python 3.8, temos quatro maneiras de definir e usar interfaces.
1919Elas 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.
4343Tipagem 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
104104importâ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
110110para incluir a `Collection` ABC, do Python 3.6.
@@ -129,7 +129,7 @@ servidor, como `GET`, `PUT` e `HEAD`.
129129Vimos na <<protocol_duck_sec>> que um protocolo especifica métodos
130130que 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
133133protocolo de sequência: os métodos que permitem a um objeto Python se comportar
134134como uma sequência.
135135
@@ -197,7 +197,7 @@ Agora, com a adoção da
197197https://fpy.li/pep544[_PEP 544—Protocols: Structural subtyping (static duck typing)_]
198198no Python 3.8, a palavra "protocolo" ganhou um novo sentido em Python—um sentido próximo,
199199mas 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) ),
201201a PEP 544 nos permite criar subclasses de `typing.Protocol` para definir
202202um ou mais métodos que uma classe
203203deve 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
293293fazer 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
310310especial que Python dá a estruturas vagamente semelhantes a uma sequência.
311311O protocolo iterável em Python representa uma forma extrema de tipagem pato:
312312o 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`.
997997Esses são os principais tipos de coleções imutáveis, e cada um tem uma subclasse
998998mutá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`::
10031003No 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`::
10101010Observe 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`::
10141014Estas 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
10401040Por outro lado, mesmo quando `isinstance(obj, Iterable)` retorna `False`,
10411041o 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
10431043na <<python_digs_seq_sec>>. A documentação de
10441044https://fpy.li/6q[`collections.abc.Iterable`]
10451045afirma:
@@ -1380,7 +1380,7 @@ E mesmo quando recebemos uma lista no argumento `iterable`,
13801380considerando que vamos remover itens da lista,
13811381e o cliente pode não estar esperando
13821382que 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
13841384que acabamos de evitar aqui.]
13851385
13861386Chegamos agora à característica dinâmica da tipagem ganso:
@@ -2482,7 +2482,7 @@ reconhecimento de classes não-relacionadas, mas que fornecem os métodos
24822482exigidos pela interface declarada na ABC.
24832483
24842484Retomamos 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
24862486o decorador `@runtime_checkable` também aproveita o `+__subclasshook__+` para
24872487suportar tipagem estrutural durante a execução—mesmo que o melhor uso dos
24882488protocolos 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
25562556como definir uma ABC (Recipe 8.12). O livro foi escrito antes de Python 3.4,
25572557então eles não usam a atual sintaxe preferida para declarar ABCs, criar uma
25582558subclasse 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
25602560detalhe, a receita cobre os principais recursos das ABCs muito bem.
25612561
25622562_The Python Standard Library by Example_ de Doug Hellmann (Addison-Wesley), tem
0 commit comments