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é :
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)
Ce me donne:
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>
J'ai cherché un peu plus sur le web et j'ai trouvé "builtins":

Exemple issu de la doc officielle:
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()
 
    # ...
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
# 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())
Je vous remercie d'avance pour vos réponse.

Nollan