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