Skip to content
This repository was archived by the owner on May 7, 2021. It is now read-only.

Correctif n°1 #145

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
modification d'une partie du texte d'introduction : suppression de la…
… partie concernant java car j'étais parti sur une mauvaise base. Remplacement par un texte indiquant que les dunders sont privés. Modification de la fonction ajouter de la classe Main pour utiliser un dunder
MarcFriedli committed Jun 15, 2017
commit de7556e869bbbb69e659405e9ff3f4d26970b22c
17 changes: 6 additions & 11 deletions source/dunders/index.rst
Original file line number Diff line number Diff line change
@@ -11,24 +11,19 @@ Introduction

Le mot dunder est un raccourci de *Double UNDERscore* et représente toutes les méthodes Python qui commencent et finissent par un double underscore (par ex. ``__init__()``).

Les dunders sont des méthodes très puissantes et régulièrement utilisées en python. Ce sont des méthodes universelles que toute classe possède (un peu à l'image de la class Object dans Java).
Les dunders sont des méthodes très puissantes et régulièrement utilisées en python. Un dunder est toujours une méthode privée appartenant à une classe. La particularité de ces méthodes et qu'elles ne sont jamais directement appelées mais toujours implicitement ou explicitement
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. très puissant, ah?
  2. privée, ah?
  3. méthode appartenant à une classe est la définition d'une méthode
  4. jamais directement appelées mais toujours implicitement ou explicitement 😕

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fatigue + traduction approximative = phrase incorrecte... Mille excuses, je n'aurai pas dû push ces inepties.

J'ai juste une question concernant votre review sur les méthodes privées. Est-ce que vous entendez par là qu'une méthode __myMethod(self) sera privée et (presque) inaccessible hors de sa classe ? Ou il y a quelque chose qui concerne plus les dunders que je suis censé trouvé ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_method et __method sont des conventions oui.

_We don't use the term "private" here, since no attribute is really private in Python (without a generally unnecessary amount of work). _

https://www.python.org/dev/peps/pep-0008/#designing-for-inheritance

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sinon, pas de problème prenez votre temps et faites tous les pushes que vous voulez. Dites-moi quand vous estimez que c'est bon.


.. Quel lien entre Object de Java et les dunders?

Cependant, dans python, les dunders sont rarement appelés directement.

.. todo:: Un peu imprécis car il n'y a pas que des méthodes. ``__name__`` ou ``__file__``

Par exemple :
par exemple :

.. code-block:: python3

toto = new MyClass()
x = MyClass() #fera appel au dunder __init__() de la classe MyClass
str(x) #fera appel au dunder __str__() de la classe MyClass
str(12) #fera appel au dunder __str__() de la classe Integer


fera appel aux méthodes ``__new__()`` et ``__init__()`` même si ces méthodes n'ont pas été surchargées.
.. todo:: Un peu imprécis car il n'y a pas que des méthodes. ``__name__`` ou ``__file__``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

__doc__ etc.


.. c'est un peu la base de la programmation orienté objet...

Les dunders ont des méthodes raccourci qui vont directement les appeler (autre raison pour laquelle on utilise régulièrement les dunders sans s'en rendre compte) :

6 changes: 3 additions & 3 deletions source/dunders/main.py
Original file line number Diff line number Diff line change
@@ -8,8 +8,8 @@ def __init__(self, *args):
"""Initialisateur."""
self.cartes = args

def ajouter(self, carte):
"""Méthode pour add une carte."""
def __add__(self, carte):
"""Redéfinition de l'opérateur + pour add une carte."""
obj2 = list(self.cartes) # Converti en liste
obj2.append(carte)
self.cartes = tuple(obj2)
@@ -42,7 +42,7 @@ def __contains__(self, item):
main = Main('1Coeur', '7Pique')
print(str(main))

main.ajouter('AsCoeur')
main+'AsCoeur'

# parce qu'on a défini __iter__!
for carte in main: