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
Copy file name to clipboardExpand all lines: capitulos/cap16.adoc
+8-2Lines changed: 8 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,11 +64,17 @@ Também adicionei menções a duas bibliotecas que demonstram um uso efetivo da
64
64
65
65
A sobrecarga de operadores((("operator overloading", "basics of"))) permite que objetos definidos pelo usuário interoperem com operadores infixos tais como `+` e `|`, ou com operadores unários como `-` e `~`. No Python, de uma perspectiva mais geral, a invocação de funções (`()`), o acesso a atributos (`.`) e o acesso a itens e o fatiamento (`[]`) também são operadores, mas este capítulo trata dos operadores unários e infixos.
66
66
67
-
A sobrecarga de operadores tem má-fama em certos círculos. É um recurso da linguagem que pode ser (e tem sido) abusado, resultando em programadores confusos, bugs, e gargalos de desempenho inesperados. Mas se bem utilizado, ele gera APIs agradáveis de usar e código legível. O Python alcança um bom equilíbrio entre flexibilidade, usabilidade e segurança, pela imposição de algumas limitações:
67
+
A sobrecarga de operadores tem má-fama em certos círculos.
68
+
É um recurso da linguagem que pode ser (e tem sido) abusado,
69
+
resultando em programadores confusos, bugs, e gargalos de desempenho inesperados.
70
+
Mas se bem utilizada, possibilita APIs agradáveis de usar e código legível.
71
+
O Python alcança um bom equilíbrio entre flexibilidade,
72
+
usabilidade e segurança,
73
+
pela imposição de algumas limitações:
68
74
69
75
* Não é permitido modificar o significado dos operadores para os tipos embutidos.
70
76
* Não é permitido criar novos operadores, apenas sobrecarregar os existentes.
71
-
* Alguns poucos operadores não podem ser sobrecarregados: `is`, `and`, `or` e `not` (mas os operadores binários `&`, `|`, e `~` podem).
77
+
* Alguns poucos operadores não podem ser sobrecarregados: `is`, `and`, `or` e `not` (mas os operadores `==`, `&`, `|`, e `~` podem).
72
78
73
79
No <<user_defined_sequences>>, na classe `Vector`, já apresentamos um operador infixo: `==`, suportado pelo método `+__eq__+`. Nesse capítulo, vamos melhorar a implementação de `+__eq__+` para lidar melhor com operandos de outros tipos além de `Vector`. Entretanto, os operadores de comparação cheia (`==`, `!=`, `>`, `<`, `>=`, `<=`) são casos especiais de sobrecarga de operadores, então começaremos sobrecarregando quatro operadores aritméticos em `Vector`: os operadores unários `-` e `+`, seguido pelos infixos `+` e `*`.
0 commit comments