Skip to content

Commit 1361271

Browse files
committed
cap08: diagrama das ABC de numbers
1 parent 214840c commit 1361271

3 files changed

Lines changed: 25 additions & 13 deletions

File tree

code/17-it-generator/tree/extra/drawtree.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,5 @@ def draw(cls):
4141

4242

4343
if __name__ == '__main__':
44-
draw(BaseException)
44+
import numbers
45+
draw(numbers.Number)

online/cap08.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1588,7 +1588,7 @@ depending on some random factor I don't know how to control.
15881588

15891589
Outro exemplo é a função `statistics.mode` da biblioteca padrão, que retorna o ponto de dado mais comum de uma série.
15901590

1591-
Aqui é uma exemplo de uso da https://fpy.li/4e[documentação]:
1591+
Eis um exemplo de uso da https://fpy.li/4e[documentação]:
15921592

15931593
[source, python]
15941594
----

vol1/cap08.adoc

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,23 +1417,32 @@ Para encerrar nossa discussão de ABCs em dicas de tipo, precisamos falar sobre
14171417
===== A queda da torre numérica
14181418

14191419
O((("numbers package")))((("numeric tower"))) pacote «`numbers`» [.small]#[fpy.li/4d]# define a assim chamada _torre numérica_ (_numeric tower_) descrita na «_PEP 3141—A Type Hierarchy for Numbers_» [.small]#[fpy.li/pep3141]# .
1420-
A torre é uma hierarquia linear de ABCs, com `Number` no topo:
1420+
A torre é uma hierarquia linear de ABCs, com a classe `numbers.Number` no topo:
14211421

1422-
* `Number`
1423-
* `Complex`
1424-
* `Real`
1425-
* `Rational`
1426-
* `Integral`
1422+
----
1423+
Number
1424+
1425+
└─ Complex
1426+
1427+
└─ Real
1428+
1429+
└─ Rational
1430+
1431+
└─ Integral
1432+
----
14271433

1428-
Esses ABCs funcionam perfeitamente para checagem de tipo durante a execução, mas eles não são suportados para checagem de tipo estática.
1434+
Esses ABCs funcionam perfeitamente para checagem de tipo durante a execução,
1435+
mas não servem para checagem de tipo estática.
14291436
A seção «_Numeric Tower_» [.small]#[fpy.li_/cardxvi]# da PEP 484 rejeita as ABCs `numbers` e
14301437
manda tratar os tipos nativos `complex`, `float`, e `int` como casos especiais,
14311438
como explicado em <<int_complex_tip>>.
1432-
Voltaremps a essa questão na «Seção 13.6.8» [.small]#&#91;vol.2, fpy.li/5g&#93;#, que é dedicada a comparar protocolos e ABCs
1439+
Voltaremps a essa questão na «Seção 13.6.8» [.small]#&#91;vol.2, fpy.li/5g&#93;#,
1440+
que é dedicada a comparar protocolos e ABCs.
14331441

1434-
Na prática, se você quiser anotar argumentos numéricos para checagem estática de tipos, há algumas opções:
1442+
Na prática, se você quiser anotar argumentos numéricos para checagem estática de tipos,
1443+
há algumas opções:
14351444

1436-
. Usar um dos tipos concretos (`int`, `float`, ou `complex`) como recomendado pela PEP 488.
1445+
. Usar um dos tipos concretos (`int`, `float`, ou `complex`) como recomendado pela PEP 484.
14371446
. Declarar um tipo union como `Union[float, Decimal, Fraction]`.
14381447
. Se você quiser evitar a codificação explícita de tipos concretos, usar protocolos numéricos como `SupportsFloat`, tratados na «Seção 13.6.2» [.small]#&#91;vol.2, fpy.li/5h&#93;#.
14391448

@@ -1590,14 +1599,16 @@ então elas não precisam de algo equivalente à pseudo-classe `TypeVar` de Pyth
15901599

15911600
Outro exemplo é a função `statistics.mode` da biblioteca padrão, que retorna o ponto de dado mais comum de uma série.
15921601

1593-
Aqui é um exemplo de uso da «documentação» [.small]#&#91;fpy.li/4e&#93;#:
1602+
Eis um exemplo de uso da «documentação» [.small]#&#91;fpy.li/4e&#93;#:
15941603

15951604
[source, python]
15961605
----
15971606
>>> mode([1, 1, 2, 3, 3, 3, 3, 4])
15981607
3
15991608
----
16001609

1610+
<<<
1611+
16011612
Sem o uso de `TypeVar`, `mode` poderia ter uma assinatura como a apresentada no <<mode_float_ex>>.
16021613

16031614
[[mode_float_ex]]

0 commit comments

Comments
 (0)