:PROPERTIES:
:ID:       831fbfd2-c668-4099-b2d7-ecae734b9ec4
:mtime:    20220519083124
:ctime:    20220516160421
:END:
#+title: Evaluation tardive

* Introduction
#+BEGIN_SRC python :results output
class A:
    def function(self):
        return A()

a = A()
A = int
print(f"{a.function() = }")
#+END_SRC

#+RESULTS:
: a.function() = 0

* Explications
 * Le code contenu dans une fonction n'est exécuté uniquement lorsque celle-ci est invoquée. Ainsi, la référence à la
fonction non déclarée ~A~ par la méthode ~A.function~ ne génère pas d'erreur,
 * Durant l'exécution de la méthode ~A.function~, 

However, during the execution Python will bind the name A from
the outer scope, which means that function method will return a newly created int instance.


* Références
 * [[https://medium.com/@saint_sdmn/10-hardest-python-questions-98986c8cd309][10 Hardest Python Questions - Medium]]

