@@ -385,7 +385,7 @@ <h2 class="anchored" data-anchor-id="inheritance---example">Inheritance - Exampl
385385</ section >
386386< section id ="section " class ="level2 smaller ">
387387< h2 class ="smaller anchored " data-anchor-id ="section "> </ h2 >
388- < div id ="d5251a7b " class ="cell " data-execution_count ="1 ">
388+ < div id ="23ca4a42 " class ="cell " data-execution_count ="1 ">
389389< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb4 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb4-1 "> < a href ="#cb4-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="im "> import</ span > math</ span >
390390< span id ="cb4-2 "> < a href ="#cb4-2 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
391391< span id ="cb4-3 "> < a href ="#cb4-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > Shape:</ span >
@@ -416,7 +416,7 @@ <h2 class="smaller anchored" data-anchor-id="section"></h2>
416416< span id ="cb4-28 "> < a href ="#cb4-28 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="cf "> return</ span > < span class ="va "> self</ span > .width < span class ="op "> *</ span > < span class ="va "> self</ span > .height</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
417417</ div >
418418< p > . . .</ p >
419- < div id ="134b93df " class ="cell " data-execution_count ="2 ">
419+ < div id ="1040eceb " class ="cell " data-execution_count ="2 ">
420420< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb5 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb5-1 "> < a href ="#cb5-1 " aria-hidden ="true " tabindex ="-1 "> </ a > shapes < span class ="op "> =</ span > [</ span >
421421< span id ="cb5-2 "> < a href ="#cb5-2 " aria-hidden ="true " tabindex ="-1 "> </ a > Circle(< span class ="fl "> 1.0</ span > , color< span class ="op "> =</ span > < span class ="st "> "red"</ span > ),</ span >
422422< span id ="cb5-3 "> < a href ="#cb5-3 " aria-hidden ="true " tabindex ="-1 "> </ a > Rectangle(< span class ="fl "> 2.0</ span > , < span class ="fl "> 3.0</ span > , color< span class ="op "> =</ span > < span class ="st "> "blue"</ span > )</ span >
@@ -573,7 +573,7 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
573573< li > …</ li >
574574</ ul >
575575< hr >
576- < div id ="b68ec9a4 " class ="cell " data-execution_count ="3 ">
576+ < div id ="5b52122e " class ="cell " data-execution_count ="3 ">
577577< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb10 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb10-1 "> < a href ="#cb10-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="im "> from</ span > collections.abc < span class ="im "> import</ span > Collection</ span >
578578< span id ="cb10-2 "> < a href ="#cb10-2 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
579579< span id ="cb10-3 "> < a href ="#cb10-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > Tool:</ span >
@@ -585,7 +585,7 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
585585< span id ="cb10-9 "> < a href ="#cb10-9 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > Screwdriver(Tool):</ span >
586586< span id ="cb10-10 "> < a href ="#cb10-10 " aria-hidden ="true " tabindex ="-1 "> </ a > name< span class ="op "> =</ span > < span class ="st "> "screwdriver"</ span > </ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
587587</ div >
588- < div id ="fd4f1232 " class ="cell " data-execution_count ="4 ">
588+ < div id ="da9e7485 " class ="cell " data-execution_count ="4 ">
589589< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb11 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb11-1 "> < a href ="#cb11-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > JavaLikeToolbox:</ span >
590590< span id ="cb11-2 "> < a href ="#cb11-2 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
591591< span id ="cb11-3 "> < a href ="#cb11-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> def</ span > < span class ="fu "> __init__</ span > (< span class ="va "> self</ span > , tools: Collection[Tool]) < span class ="op "> -></ span > < span class ="va "> None</ span > :</ span >
@@ -602,17 +602,17 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
602602< span id ="cb11-14 "> < a href ="#cb11-14 " aria-hidden ="true " tabindex ="-1 "> </ a > tb < span class ="op "> =</ span > JavaLikeToolbox([Hammer(), Screwdriver()])</ span >
603603< span id ="cb11-15 "> < a href ="#cb11-15 " aria-hidden ="true " tabindex ="-1 "> </ a > tb.getToolByName(< span class ="st "> "hammer"</ span > )</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
604604< div class ="cell-output cell-output-display " data-execution_count ="4 ">
605- < pre > < code > <__main__.Hammer at 0x7f6a48585a90 ></ code > </ pre >
605+ < pre > < code > <__main__.Hammer at 0x7fdd5c411a90 ></ code > </ pre >
606606</ div >
607607</ div >
608- < div id ="a7abbeeb " class ="cell " data-execution_count ="5 ">
608+ < div id ="bd7a28d2 " class ="cell " data-execution_count ="5 ">
609609< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb13 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb13-1 "> < a href ="#cb13-1 " aria-hidden ="true " tabindex ="-1 "> </ a > tb.numberOfTools()</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
610610< div class ="cell-output cell-output-display " data-execution_count ="5 ">
611611< pre > < code > 2</ code > </ pre >
612612</ div >
613613</ div >
614614< hr >
615- < div id ="d1ef8e51 " class ="cell " data-execution_count ="6 ">
615+ < div id ="d67df7c1 " class ="cell " data-execution_count ="6 ">
616616< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb15 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb15-1 "> < a href ="#cb15-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > Toolbox:</ span >
617617< span id ="cb15-2 "> < a href ="#cb15-2 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
618618< span id ="cb15-3 "> < a href ="#cb15-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> def</ span > < span class ="fu "> __init__</ span > (< span class ="va "> self</ span > , tools: Collection[Tool]):</ span >
@@ -627,10 +627,10 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
627627< span id ="cb15-12 "> < a href ="#cb15-12 " aria-hidden ="true " tabindex ="-1 "> </ a > tb < span class ="op "> =</ span > Toolbox([Hammer(), Screwdriver()])</ span >
628628< span id ="cb15-13 "> < a href ="#cb15-13 " aria-hidden ="true " tabindex ="-1 "> </ a > tb[< span class ="st "> "hammer"</ span > ]</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
629629< div class ="cell-output cell-output-display " data-execution_count ="6 ">
630- < pre > < code > <__main__.Hammer at 0x7f6a485987d0 ></ code > </ pre >
630+ < pre > < code > <__main__.Hammer at 0x7fdd5c4287d0 ></ code > </ pre >
631631</ div >
632632</ div >
633- < div id ="9c09d476 " class ="cell " data-execution_count ="7 ">
633+ < div id ="e49dcd68 " class ="cell " data-execution_count ="7 ">
634634< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb17 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb17-1 "> < a href ="#cb17-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="bu "> len</ span > (tb)</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
635635< div class ="cell-output cell-output-display " data-execution_count ="7 ">
636636< pre > < code > 2</ code > </ pre >
@@ -640,7 +640,7 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
640640< p > You want your code to feel like the built-in types.</ p >
641641</ div >
642642< hr >
643- < div id ="32179ce3 " class ="cell " data-execution_count ="8 ">
643+ < div id ="2604a5e1 " class ="cell " data-execution_count ="8 ">
644644< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb19 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb19-1 "> < a href ="#cb19-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > SparseMatrix:</ span >
645645< span id ="cb19-2 "> < a href ="#cb19-2 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> def</ span > < span class ="fu "> __init__</ span > (< span class ="va "> self</ span > , shape, fill_value< span class ="op "> =</ span > < span class ="fl "> 0.0</ span > , data< span class ="op "> =</ span > < span class ="va "> None</ span > ):</ span >
646646< span id ="cb19-3 "> < a href ="#cb19-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="va "> self</ span > .shape < span class ="op "> =</ span > shape</ span >
@@ -671,7 +671,7 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
671671< span id ="cb19-28 "> < a href ="#cb19-28 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="cf "> return</ span > matrix_str</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
672672</ div >
673673< hr >
674- < div id ="76981969 " class ="cell " data-execution_count ="9 ">
674+ < div id ="086184c9 " class ="cell " data-execution_count ="9 ">
675675< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb20 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb20-1 "> < a href ="#cb20-1 " aria-hidden ="true " tabindex ="-1 "> </ a > m < span class ="op "> =</ span > SparseMatrix(shape< span class ="op "> =</ span > (< span class ="dv "> 2</ span > ,< span class ="dv "> 2</ span > ), fill_value< span class ="op "> =</ span > < span class ="fl "> 0.0</ span > )</ span >
676676< span id ="cb20-2 "> < a href ="#cb20-2 " aria-hidden ="true " tabindex ="-1 "> </ a > m</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
677677< div class ="cell-output cell-output-display " data-execution_count ="9 ">
@@ -680,14 +680,14 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
680680</ div >
681681</ div >
682682< p > . . .</ p >
683- < div id ="918ce56c " class ="cell " data-execution_count ="10 ">
683+ < div id ="de53f6b0 " class ="cell " data-execution_count ="10 ">
684684< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb22 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb22-1 "> < a href ="#cb22-1 " aria-hidden ="true " tabindex ="-1 "> </ a > m[< span class ="dv "> 0</ span > ,< span class ="dv "> 1</ span > ]</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
685685< div class ="cell-output cell-output-display " data-execution_count ="10 ">
686686< pre > < code > 0.0</ code > </ pre >
687687</ div >
688688</ div >
689689< p > . . .</ p >
690- < div id ="da2d7a4c " class ="cell " data-execution_count ="11 ">
690+ < div id ="7f511d78 " class ="cell " data-execution_count ="11 ">
691691< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb24 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb24-1 "> < a href ="#cb24-1 " aria-hidden ="true " tabindex ="-1 "> </ a > m[< span class ="dv "> 0</ span > ,< span class ="dv "> 1</ span > ] < span class ="op "> =</ span > < span class ="fl "> 1.0</ span > </ span >
692692< span id ="cb24-2 "> < a href ="#cb24-2 " aria-hidden ="true " tabindex ="-1 "> </ a > m[< span class ="dv "> 1</ span > ,< span class ="dv "> 0</ span > ] < span class ="op "> =</ span > < span class ="fl "> 2.0</ span > </ span >
693693< span id ="cb24-3 "> < a href ="#cb24-3 " aria-hidden ="true " tabindex ="-1 "> </ a > m</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
@@ -697,7 +697,7 @@ <h2 class="anchored" data-anchor-id="pythonic">Pythonic</h2>
697697</ div >
698698</ div >
699699< p > . . .</ p >
700- < div id ="b2e8b531 " class ="cell " data-execution_count ="12 ">
700+ < div id ="25d792d4 " class ="cell " data-execution_count ="12 ">
701701< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb26 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb26-1 "> < a href ="#cb26-1 " aria-hidden ="true " tabindex ="-1 "> </ a > m.transpose()</ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
702702< div class ="cell-output cell-output-display " data-execution_count ="12 ">
703703< pre > < code > 0.0 1.0
@@ -718,7 +718,7 @@ <h2 class="anchored" data-anchor-id="duck-typing">Duck typing</h2>
718718</ section >
719719< section id ="section-1 " class ="level2 smaller ">
720720< h2 class ="smaller anchored " data-anchor-id ="section-1 "> </ h2 >
721- < div id ="aff8fb3c " class ="cell " data-execution_count ="13 ">
721+ < div id ="498870c2 " class ="cell " data-execution_count ="13 ">
722722< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb28 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb28-1 "> < a href ="#cb28-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="im "> import</ span > math</ span >
723723< span id ="cb28-2 "> < a href ="#cb28-2 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
724724< span id ="cb28-3 "> < a href ="#cb28-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="kw "> class</ span > Circle: < span class ="co "> # no base class</ span > </ span >
@@ -745,7 +745,7 @@ <h2 class="smaller anchored" data-anchor-id="section-1"></h2>
745745< span id ="cb28-24 "> < a href ="#cb28-24 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="cf "> return</ span > < span class ="ss "> f"A </ span > < span class ="sc "> {</ span > < span class ="va "> self</ span > < span class ="sc "> .</ span > color< span class ="sc "> }</ span > < span class ="ss "> rectangle with area = </ span > < span class ="sc "> {</ span > < span class ="va "> self</ span > < span class ="sc "> .</ span > area()< span class ="sc "> :.2f}</ span > < span class ="ss "> "</ span > </ span > </ code > </ pre > </ div > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ div >
746746</ div >
747747< p > . . .</ p >
748- < div id ="c507e7b5 " class ="cell " data-execution_count ="14 ">
748+ < div id ="fa9d312a " class ="cell " data-execution_count ="14 ">
749749< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb29 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb29-1 "> < a href ="#cb29-1 " aria-hidden ="true " tabindex ="-1 "> </ a > shapes < span class ="op "> =</ span > [</ span >
750750< span id ="cb29-2 "> < a href ="#cb29-2 " aria-hidden ="true " tabindex ="-1 "> </ a > Circle(< span class ="fl "> 1.0</ span > , color< span class ="op "> =</ span > < span class ="st "> "red"</ span > ),</ span >
751751< span id ="cb29-3 "> < a href ="#cb29-3 " aria-hidden ="true " tabindex ="-1 "> </ a > Rectangle(< span class ="fl "> 2.0</ span > , < span class ="fl "> 3.0</ span > , color< span class ="op "> =</ span > < span class ="st "> "blue"</ span > )</ span >
@@ -867,7 +867,7 @@ <h2 class="anchored" data-anchor-id="section-2"></h2>
867867</ section >
868868< section id ="example---pydantic " class ="level2 ">
869869< h2 class ="anchored " data-anchor-id ="example---pydantic "> Example - Pydantic</ h2 >
870- < div id ="80c86c24 " class ="cell " data-execution_count ="15 ">
870+ < div id ="745241cc " class ="cell " data-execution_count ="15 ">
871871< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb36 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb36-1 "> < a href ="#cb36-1 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="im "> from</ span > pydantic < span class ="im "> import</ span > BaseModel</ span >
872872< span id ="cb36-2 "> < a href ="#cb36-2 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="im "> from</ span > datetime < span class ="im "> import</ span > date</ span >
873873< span id ="cb36-3 "> < a href ="#cb36-3 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
@@ -886,7 +886,7 @@ <h2 class="anchored" data-anchor-id="example---pydantic">Example - Pydantic</h2>
886886< pre > < code > Sensor(name='Sensor 1', voltage=3.3, install_date=datetime.date(2020, 1, 1), location=(4.42, 51.22))</ code > </ pre >
887887</ div >
888888</ div >
889- < div id ="5e034329 " class ="cell " data-execution_count ="16 ">
889+ < div id ="3bd9b4a5 " class ="cell " data-execution_count ="16 ">
890890< div class ="code-copy-outer-scaffold "> < div class ="sourceCode cell-code " id ="cb38 "> < pre class ="sourceCode python code-with-copy "> < code class ="sourceCode python "> < span id ="cb38-1 "> < a href ="#cb38-1 " aria-hidden ="true " tabindex ="-1 "> </ a > data < span class ="op "> =</ span > {</ span >
891891< span id ="cb38-2 "> < a href ="#cb38-2 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="st "> "name"</ span > : < span class ="st "> "Sensor 1"</ span > ,</ span >
892892< span id ="cb38-3 "> < a href ="#cb38-3 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="st "> "voltage"</ span > : < span class ="st "> "3.3"</ span > ,</ span >
0 commit comments