Initiation à la programmation ENSAE 1A

seance6_classe_heritage.tex

première version


class Version1 :
    def __init__ (self, p) :
        self.p = p
    def fonction1 (self):
        print("Version1.fonction1", self.p)
    def fonction2 (self):
        print("Version1.fonction2", self.p)
    def fonction3 (self):
        print("Version1.fonction3", self.p)
    def fonction_finale (self):
        self.fonction1()
        self.fonction2()
        self.fonction3()
        
v = Version1(0)
v.fonction_finale()

# affiche
# Version1.fonction1 0
# Version1.fonction2 0
# Version1.fonction3 0

seconde version héritant de la première


class Version2(Version1):
    def fonction2 (self):
        print("Version2.fonction2", self.p+1)

v = Version2(0)
v.fonction_finale()

# affiche
# Version1.fonction1 0
# Version2.fonction2 1
# Version1.fonction3 0

classe Piece


import random
class Piece :
    def tirage_aleatoire(self, precedent) :
        return random.randint(0,1)
    def moyenne_tirage(self, n):
        # ....
        return ...
				
p = Piece()
print (p.moyenne_tirage(100))

classe PieceTruquee


import random
class PieceTruquee(Piece) :
    # ....

classe PieceTruquee


import random
if random.random() <= 0.7 :
    # faire une chose avec la probabilité 0.7
else :
    # faire une autre chose avec la probabilité 0.3

classe PieceTruquee


import random
class PieceTruquee(Piece) :
    def tirage_aleatoire(self, precedent) :
        return 1 - Piece.tirage_aleatoire(self, precedent)

utilisation de fonction


def moyenne_tirage(n, fonction):
    tirage = [ ]
    for i in range (n) :
        precedent = tirage[-1] if i > 0 else None
        tirage.append( fonction (precedent) )
    s = sum(tirage)
    return s * 1.0 / len(tirage)
        
print (moyenne_tirage(100, lambda v : random.randint(0,1) ))
       
def truquee (precedent) :
    if precedent == None or precedent == 1 :
        return random.randint(0,1)
    else :
        return 1 if random.randint(0,9) >= 3 else 0
    
print (moyenne_tirage(100, truquee ))