Files
org-roamings/20220516160421-evaluation_tardive.org
2022-06-04 12:57:39 +02:00

34 lines
903 B
Org Mode

: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]]