Salutations tout le monde,
Je débute en programmation orientée objet sur Python 3.4 et j'ai découvert la notion de "surcharge de classe".
Le problème: quand je copie-colle les exemples, rien ne marche chez moi (je suis sur Python 3.4)
Exemple trouvé :
Ce me donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 class Temps : """ Classe permettant de créer des temps. """ def __init__(self, temps) : """ Constructeur de temps ! temps : Le temps en secondes. """ self.temps = temps def __str__(self) : """ Surcharge de la conversion en chaîne de caractères.""" jour = self.temps//86400 heures = (self.temps%86400)//3600 minutes = (self.temps%3600)//60 secondes = (self.temps%60) texte = "" if jour : texte += "%ij" % jour if heures : texte += "%ih" % heures if minutes : texte += "%imin" % minutes texte += "%is" % secondes return texte liste = [Temps(12), Temps(342), Temps(8456), Temps(2348509)] for temps in liste : print(temps)
J'ai cherché un peu plus sur le web et j'ai trouvé "builtins":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 >>> <__main__.Temps object at 0x023B8290> <__main__.Temps object at 0x023F5C30> <__main__.Temps object at 0x023F5C50> <__main__.Temps object at 0x023F5C70>
Exemple issu de la doc officielle:
Sauf que, comme je commence tout juste à comprendre le fonctionnement des objets sur python, je n'arrive pas à adapter cet exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import builtins def open(path): f = builtins.open(path, 'r') return UpperCaser(f) class UpperCaser: '''Wrapper around a file that converts output to upper-case.''' def __init__(self, f): self._f = f def read(self, count=-1): return self._f.read(count).upper() # ...
Je vous remercie d'avance pour vos réponse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 # Built-in namespace import builtins # Extended subclass class mystr(str): def first_last(self): if self: return self[0] + self[-1] else: return '' # Substitute the original str with the subclass on the built-in namespace builtins.str = mystr print (str(1234).first_last())
Nollan
Partager