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: online/cap13.adoc
+13-8Lines changed: 13 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -315,20 +315,25 @@ A assinatura do método especial `+__setitem__+` está definida na _A Referênci
315
315
Aqui nomeei os argumentos `deck, position, card`—e não `self, key, value` como na referência da linguagem - para mostrar que todo método Python começa sua vida como uma função comum, e [.keep-together]#nomear# o primeiro argumento `self` é só uma convenção.
316
316
Isso está bom para uma sessão no console, mas em um arquivo de código-fonte de Python é muito melhor usar `self`, `key`, e `value`, seguindo a [.keep-together]#documentação#.
317
317
318
-
O truque é que `set_card` sabe que o `deck` tem um atributo chamado `_cards`,
319
-
e `_cards` tem que ser uma sequência mutável.
318
+
O truque é que `set_card` pressupõe que o `deck` tem um atributo chamado `+_cards+`,
319
+
e seu valor deve ser uma sequência mutável.
320
320
A função `set_cards` é então anexada à classe `FrenchDeck` class como o método especial `+__setitem__+`.
321
321
Isso é um exemplo de _monkey patching_:
322
-
modificar uma classe ou módulo durante a execução, sem tocar no código finte.
323
-
O "monkey patching" é poderoso, mas o código que efetivamente executa a modificação está muito intimamente ligado ao programa sendo modificado, muitas vezes trabalhando com atributos privados e não-documentados.
322
+
modificar uma classe ou módulo durante a execução, sem tocar no código fonte.
323
+
O "monkey patching" é poderoso, mas o código que executa a modificação
324
+
fica muito intimamente acoplado ao programa sendo modificado,
325
+
muitas vezes trabalhando com atributos privados e não-documentados.
324
326
325
-
Além de ser um exemplo de "monkey patching", o
327
+
Além de ser um exemplo de monkey patching, o
326
328
<<ex_monkey_patch>> enfatiza a natureza dinâmica dos protocolos no duck typing dinâmico:
327
-
`random.shuffle` não se importa com a classe do argumento, ela só precisa que o objeto implemente métodos do protocolo de sequência mutável.
328
-
Não importa sequer se o objeto "nasceu" com os métodos necessários ou se eles foram de alguma forma adquiridos depois.
329
+
`random.shuffle` não se importa com a classe do argumento,
330
+
ela só precisa que o objeto implemente métodos do protocolo de sequência mutável.
331
+
Não importa sequer se o objeto "nasceu" com os métodos necessários
332
+
ou se eles foram de alguma forma adquiridos depois.
329
333
330
334
O duck typing não precisa ser loucamente inseguro ou difícil de depurar e manter.
331
-
A próxima seção mostra alguns padrões de programação úteis para detectar protocolos dinâmicos sem recorrer a verificações explícitas.((("", startref="monkey13")))((("", startref="Prun13")))
335
+
A próxima seção mostra alguns padrões de programação úteis para detectar
336
+
protocolos dinâmicos sem recorrer a verificações explícitas.((("", startref="monkey13")))((("", startref="Prun13")))
0 commit comments