Skip to content

Commit c8c86d7

Browse files
committed
cap12: wip
1 parent 44a8587 commit c8c86d7

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

online/cap12.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Nossa apresentação voltada para o código será interrompida por uma discussã
2424

2525
=== Novidades neste capítulo
2626

27-
Não((("sequences, special methods for", "significant changes to"))) ocorreu qualquer grande modificação neste capítulo. Há uma breve discussão nova sobre o `typing.Protocol` em um quadro de dicas, no final da <<protocol_duck_section>>.
27+
Não((("sequences, special methods for", "significant changes to"))) ocorreu qualquer grande modificação neste capítulo. Há uma breve discussão nova sobre o `typing.Protocol` em um quadro de dicas, no final da <<protocol_duck_sec>>.
2828

2929
Na <<slice_aware_sec>>, a implementação do `+__getitem__+` no <<ex_vector_v2>> está mais concisa e robusta que o exemplo na primeira edição, graças ao _duck typing_ e ao `operator.index`.
3030
Essa mudança foi replicada para as implementações seguintes de `Vector` aqui e no <<ch_op_overload>>.
@@ -110,7 +110,7 @@ Observe que os métodos `+__str__+`, `+__eq__+`, e `+__bool__+` são idênticos
110110
Aliás, poderíamos ter criado `Vector` como uma subclasse de `Vector2d`, mas escolhi não fazer isso por duas razões. Em primeiro lugar, os construtores incompatíveis de fato tornam a relação de super/subclasse desaconselhável. Eu até poderia contornar isso como um tratamento engenhoso dos parâmetros em
111111
`+__init__+`, mas a segunda razão é mais importante: queria que `Vector` fosse um exemplo independente de uma classe que implementa o protocolo de sequência. É o que faremos a seguir, após uma discussão sobre o termo _protocolo_.((("", startref="VCM2d12")))((("", startref="SSM2d12")))
112112

113-
[[protocol_duck_section]]
113+
[[protocol_duck_sec]]
114114
=== Protocolos e o _duck typing_
115115

116116
Já((("Vector class, multidimensional", "protocols and duck typing")))((("sequences, special methods for", "protocols and duck typing")))((("protocols", "duck typing and")))((("duck typing"))) no <<ch_data_model>>, vimos que não é necessário herdar de qualquer classe em especial para criar um tipo sequência completamente funcional em Python; basta implementar os métodos que satisfazem o protocolo de sequência. Mas de que tipo de protocolo estamos falando?
@@ -701,7 +701,7 @@ PROD: unexpected indent in first line after page break
701701
Como vimos na <<format_display_sec>>, ao estender a https://docs.python.org/pt-br/3/library/string.html#formatspec[Minilinguagem de especificação de formato] é melhor evitar a reutilização dos códigos de formato usados por tipos embutidos. Especialmente, nossa minilinguagens estendida também usa os códigos de formato dos números de ponto flutuante (`'eEfFgGn%'`), em seus significados originais, então devemos certamente evitar qualquer um daqueles. Inteiros usam `'bcdoxXn'` e strings usam `'s'`. Escolhi `'p'` para as coordenadas polares de `Vector2d`. O código `'h'` para coordendas hiperesféricas é uma boa opção.
702702
====
703703

704-
Por exemplo, dado um objeto `Vector` em um espaço 4D (`len(v) == 4`), o código `'h'` irá produzir uma linha como `<r, Φ, Φ, Φ>`, onde `r` é a magnitude (`abs(v)`), e o restante dos números são os componentes angulares Φ, Φ, Φ.
704+
Por exemplo, dado um objeto `Vector` em um espaço 4D (`len(v) == 4`), o código `'h'` irá produzir uma linha como `<r, Φ~1~, Φ~2~, Φ~3~>`, onde `r` é a magnitude (`abs(v)`), e o restante dos números são os componentes angulares Φ~1~, Φ~2~, Φ~3~.
705705

706706
Aqui estão algumas amostras do formato de coordenadas esféricas em 4D, retiradas dos doctests de _vector_v5.py_ (veja o <<ex_vector_v5>>):
707707

@@ -715,7 +715,7 @@ Aqui estão algumas amostras do formato de coordenadas esféricas em 4D, retirad
715715
'<1.00000, 1.57080, 0.00000, 0.00000>'
716716
----
717717

718-
Antes de podermos implementar as pequenas mudanças necessárias em `+__format__+`, precisamos escrever um par de métodos de apoio: `angle(n)`, para computar uma das coordenadas angulares (por exemplo, Φ), e `angles()`, para devolver um iterável com todas as coordenadas angulares. Não vou descrever a matemática aqui; se você tiver curiosidade, a página https://fpy.li/nsphere[“_n_-sphere”] (EN: ver Nota 6) da Wikipedia contém as fórmulas que usei para calcular coordenadas esféricas a partir das coordendas cartesianas no array de componentes de `Vector`.
718+
Antes de podermos implementar as pequenas mudanças necessárias em `+__format__+`, precisamos escrever um par de métodos de apoio: `angle(n)`, para computar uma das coordenadas angulares (por exemplo, Φ~1~), e `angles()`, para devolver um iterável com todas as coordenadas angulares. Não vou descrever a matemática aqui; se você tiver curiosidade, a página https://fpy.li/nsphere[“_n_-sphere”] (EN: ver Nota 6) da Wikipedia contém as fórmulas que usei para calcular coordenadas esféricas a partir das coordendas cartesianas no array de componentes de `Vector`.
719719

720720
O <<ex_vector_v5>> é a listagem completa de _vector_v5.py_, consolidando tudo que implementamos desde a <<vector_take1_sec>>, e acrescentando a formatação customizada
721721

online/cap13.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ Na <<numbers_abc_proto_sec>> eu explico porque, em vez disso, você deve usar pr
9393
A((("protocols", "meanings of protocol"))) palavra _protocolo_ tem significados diferentes na ciência da computação, dependendo do contexto.
9494
Um protocolo de rede como o HTTP especifica comandos que um cliente pode enviar para um servidor, como `GET`, `PUT` e `HEAD`.
9595

96-
Vimos na <<protocol_duck_section>> que um objeto protocolo especifica métodos que um objeto precisa oferecer para cumprir um papel.
96+
Vimos na <<protocol_duck_sec>> que um objeto protocolo especifica métodos que um objeto precisa oferecer para cumprir um papel.
9797

9898
O exemplo `FrenchDeck` no <<ch_data_model>> demonstra um objeto protocolo, o protocolo de sequência: os métodos que permitem a um objeto Python se comportar como uma sequência.
9999

print/pdf_export.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#!/bin/bash
22
set -e # exit when any command fails
33
name="${1%.*}-miolo.pdf"
4-
echo $name
54
bundle exec asciidoctor-pdf -v --theme pyfl-fontmix-theme.yml -a pdf-fontsdir=./fonts/ $1
6-
pdfunite "${1%.*}.pdf" colofao.pdf $name
7-
open $name
5+
# pdfunite "${1%.*}.pdf" colofao.pdf $name
6+
# open $name
7+
echo "confira https://hexapdf.gettalong.org/"
8+
echo $name
9+

0 commit comments

Comments
 (0)