#1 Le 18/08/2017, à 11:24
- paul18
[résolu] Python et POO: premier essai
Salut,
Je m'essaie à la POO (pure débutant) : un cours dans une main, le clavier dans l'autre; je n'arrive pas à comprendre pourquoi le code 1 me renvoie bien les valeurs, alors que le second me retourne les adresses mémoire : à côté de quoi je suis passé ?
Merci par avance
Paul
Code1:
class Voiture:
def __init__(self): ## les valeurs sont initialisées par défaut
self.marque = "no_marque"
self.couleur = "no_couleur"
self.reserveessence = 0.
def demarrer(self):
if self.reserveessence > 0. :
print("Je démarre")
else:
print("Je ne peux pas démarrer (réserve = 0)")
def rouler(self,nbre_Km):
self.nbre_Km = float(nbre_Km)
self.reserveessence = (self.reserveessence - 5.*self.nbre_Km/100.)
## main
ma_caisse = Voiture() ## appel de la classe
ma_caisse.reserveessence = 30 ## initialisation reserveessence
ma_caisse.demarrer() ## demarrage -> la class vérifie si c'est possible (fct demarrer)
ma_caisse.rouler(100) ## on roule 100 Km -> remise à jour de "reserveessence"
print(ma_caisse.reserveessence) ## affiche la nouvelle valeur
## on parcours à nouveau 100 Km
ma_caisse.rouler(100) ## on roule 100 Km -> remise à jour de "reserveessence"
print(ma_caisse.reserveessence) ## affiche la nouvelle valeur --> garde bien en mémoire l'historique !!!!!!!
## on parcours à nouveau 400 Km
ma_caisse.rouler(400) ## on roule 400 Km -> remise à jour de "reserveessence"
print(ma_caisse.reserveessence) ## affiche la nouvelle valeur --> réserve tombe à zéro !!!!
ma_caisse.demarrer() ## la voiture ne peut plus démarrer :-)
Code 2:
class Temperature:
## constructeur ##
def __init__(self, laValeur = 0):
self.__valeur = float(laValeur) ## valeur est ici privée
## méthodes publiques: accès aux attributs (uniquement)
## accesseurs
def getValeur(self):
return self.__valeur ## on accède à la valeur de "__valeur"
## on ne fait que retourner une valeur
# ## mutateur = setter
# def setValeur(self,value): ## "__valeur" était initalement privée, on la rend indirectement public via "setValeur"
# ## "value" est passée en argument ... puisque qu'on mute "__valeur" --> via self
# self.__valeur = value
## Méthodes publiques: opérations
def getValeurC(self):
return (self.__valeur - 273.16) ## Calcul de T en °C depuis la valeur en K
def getValeurF(self):
return (1.8 * self.getValeurC() + 32) ## on appelle ici la T en °C -> on pointe sur getValeurC
## main
eauChaude = Temperature(310) ## Calcul l'objet eauChaude
print(eauChaude.getValeurC)
print(eauChaude.getValeurF)
print(eauChaude.getValeur) ## vérif sur valeur initiale
Dernière modification par paul18 (Le 18/08/2017, à 12:40)
Hors ligne
#2 Le 18/08/2017, à 11:42
- pingouinux
Re : [résolu] Python et POO: premier essai
Bonjour,
Je n'ai pas testé, mais les appels doivent se faire ainsi :
print(eauChaude.getValeurC())
print(eauChaude.getValeurF())
print(eauChaude.getValeur()) ## vérif sur valeur initiale
Hors ligne
#3 Le 18/08/2017, à 12:31
- paul18
Re : [résolu] Python et POO: premier essai
oui c'est bien ça; j'ai compris mon erreur: j'appelle une fonction/méthode et non une variable/instance
Merci
Dernière modification par paul18 (Le 18/08/2017, à 12:40)
Hors ligne