You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
O((("Python Data Model", "special methods overview", id="PDMspmtov01")))((("special methods",
642
643
"special method names (operators excluded)")))
643
-
«capítulo "Modelo de Dados"» [.small]#[fpy.li/2j]#
644
+
capítulo «Modelo de Dados» [.small]#[fpy.li/2j]#
644
645
de _A Referência da Linguagem Python_ lista mais de 80 nomes de métodos especiais.
645
646
Mais da metade deles implementa operadores aritméticos, de comparação, ou bit-a-bit.
646
647
Para ter uma visão geral do que está disponível, veja as tabelas a seguir.
@@ -672,7 +673,7 @@ Operadores infixos e numéricos são suportados pelos métodos especiais listado
672
673
<<special_operators_tbl>>.
673
674
Aqui os nomes mais recentes são `+__matmul__+`, `+__rmatmul__+`, e `+__imatmul__+`,
674
675
adicionados no Python 3.5 para suportar o uso de `@` como operador de multiplicação de matrizes,
675
-
como veremos no Capítulo 16 [.small]#[vol.2, fpy.li/4r]#.((("special methods", "special method names and symbols for operators")))
676
+
como veremos no «Capítulo 16» [.small]#[vol.2, fpy.li/4r]#.((("special methods", "special method names and symbols for operators")))
676
677
677
678
[[special_operators_tbl]]
678
679
.Nomes e símbolos de métodos especiais para operadores
@@ -695,15 +696,17 @@ Python invoca um método especial de operador reverso no segundo argumento
695
696
quando o método especial correspondente não pode ser usado no primeiro operando.
696
697
Atribuições aumentadas são um atalho combinando um operador infixo com uma atribuição de variável, por exemplo `a += b`.
697
698
698
-
O Capítulo 16 [.small]#[vol.2, fpy.li/4r]# explica em detalhes os operadores reversos e a atribuição aumentada.((("", startref="PDMspmtov01")))
699
+
O «Capítulo 16» [.small]#[vol.2, fpy.li/4r]#
700
+
explica em detalhes os operadores reversos e a atribuição aumentada.((("", startref="PDMspmtov01")))
699
701
====
700
702
701
703
702
704
=== Por que len não é um método?
703
705
704
706
Em 2013, fiz((("Python Data Model", "making len work with custom objects")))((("__len__")))
705
707
essa pergunta a Raymond Hettinger, um dos desenvolvedores principais do Python,
706
-
e sua resposta foi basicamente uma citação do «"The Zen of Python" (_O Zen do Python_)» [.small]#[fpy.li/1-8]# (EN): "a praticidade vence a pureza."
708
+
e sua resposta foi basicamente uma citação do
709
+
«"The Zen of Python" (_O Zen do Python_)» [.small]#[fpy.li/1-8]#: "a praticidade vence a pureza."
707
710
Na <<how_special_used>>, descrevi como `len(x)` roda muito rápido quando `x` é uma instância de um tipo embutido.
708
711
Nenhum método é chamado para os objetos embutidos do CPython: o tamanho é simplesmente lido de um campo em uma struct C.
709
712
Obter o número de itens em uma coleção é uma operação comum, e precisa funcionar de forma eficiente para tipos tão básicos e diferentes como
@@ -743,43 +746,43 @@ uma para depuração e registro (_log_), outra para apresentar aos usuários fin
743
746
Emular sequências, como mostrado com o exemplo do `FrenchDeck`, é um dos usos mais comuns dos métodos especiais.
744
747
Por exemplo, bibliotecas de banco de dados frequentemente devolvem resultados de consultas na forma de coleções similares a sequências.
745
748
Tirar o máximo proveito dos tipos de sequências existentes é o assunto do <<ch_sequences>>.
746
-
Como implementar suas próprias sequências será visto no Capítulo 12 [.small]#[vol.2, fpy.li/4t]#,
749
+
Como implementar suas próprias sequências será visto no «Capítulo 12» [.small]#[vol.2, fpy.li/4t]#,
747
750
onde criaremos uma extensão multidimensional da classe `Vector`.
748
751
749
752
Graças à sobrecarga de operadores, Python oferece uma rica seleção de tipos numéricos,
750
753
desde os tipos embutidos até `decimal.Decimal` e `fractions.Fraction`,
751
754
todos eles suportando operadores aritméticos infixos.
752
755
A biblioteca de ciência de dados _NumPy_ suporta operadores infixos com matrizes e tensores.
753
-
A implementação de operadores—incluindo operadores reversos e atribuição aumentada—será vista no Capítulo 16 [.small]#[vol.2, fpy.li/4r]#,
756
+
A implementação de operadores—incluindo operadores reversos e atribuição aumentada—será vista no
0 commit comments