<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Duck-Typing on Blog do Riverfount</title>
    <link>https://riverfount.dev.br/tags/duck-typing/</link>
    <description>Recent content in Duck-Typing on Blog do Riverfount</description>
    <generator>Hugo -- 0.148.2</generator>
    <language>pt-BR</language>
    <lastBuildDate>Wed, 22 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://riverfount.dev.br/tags/duck-typing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Protocol: duck typing com garantias em tempo de análise</title>
      <link>https://riverfount.dev.br/posts/protocol_duck_typing_mypy/</link>
      <pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://riverfount.dev.br/posts/protocol_duck_typing_mypy/</guid>
      <description>&lt;p&gt;Você herdou um sistema de cálculo de descontos. Não tem classe base, não tem ABC, não tem interface formal nenhuma. Cada tipo de desconto (cupom, fidelidade, campanha sazonal) é só uma classe qualquer com um método &lt;code&gt;aplicar(pedido)&lt;/code&gt; que devolve o valor final. O código que orquestra isso nem sabe que tipo de objeto está recebendo, só chama &lt;code&gt;desconto.aplicar(pedido)&lt;/code&gt; e segue em frente. Duck typing raiz: se anda como pato e grasna como pato, aplica desconto como pato.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
