Weekly backup.
This commit is contained in:
31
20220516155011-ordre_de_resolution_des_attributs.org
Normal file
31
20220516155011-ordre_de_resolution_des_attributs.org
Normal file
@@ -0,0 +1,31 @@
|
||||
:PROPERTIES:
|
||||
:ID: e9a0cb94-ee68-4dfd-9013-c83ce2a18481
|
||||
:mtime: 20220516155419
|
||||
:ctime: 20220516155011
|
||||
:END:
|
||||
#+title: Ordre de résolution des attributs
|
||||
|
||||
* Introduction
|
||||
#+BEGIN_SRC python :results output
|
||||
class A:
|
||||
answer = 42
|
||||
def __init__(self):
|
||||
self.answer = 21
|
||||
self.__add__ = lambda x, y: x.answer + y
|
||||
|
||||
def __add__(self, y):
|
||||
return self.answer - y
|
||||
|
||||
print(f"{A() + 5 = }")
|
||||
#+END_SRC
|
||||
|
||||
#+RESULTS:
|
||||
: A() + 5 = 16
|
||||
|
||||
* Explication
|
||||
Afin de résoudre les noms, Python cherche au niveau de l'instance, puis à celui de la classe et enfin à celui des
|
||||
classes parentes, sauf pour les /dunder methods/ pour lesquelles Python cherche directement au niveau de la classe.
|
||||
|
||||
* Référence
|
||||
* [[https://medium.com/@saint_sdmn/10-hardest-python-questions-98986c8cd309][10 Hardest Python Questions - Medium]]
|
||||
|
Reference in New Issue
Block a user