#!/usr/bin/python # -*- coding: utf-8 -*- # prog05.txt # http://www.linux-azur.org/~ramix/python/debuter_avec_Python/prog05.txt # #################################################################### # Très commode pour DEFINIR DES NOUVEAUX TYPES .... # LES CLASSES SONT LES PRINCIPAUX OUTILS DE LA POO # instances de classes, héritage, spécialisation, surcharge des opérateurs # Une classe (comme un module) n'est qu'un ESPACE DE NOMS # MAIS elle peut produire de multiples exemplaires (les instances) # CONSTRUCTEURS __init__ & DESTRUCTEURS __del__ SONT IMPLICITES dans # cet exemple :-) # # l'objet CLASSE kitriple est créé par cette instruction class kitriple: def fois(self,valeur): # fois est une METHODE de la classe kitriple # self le premier argument fait référence à ....... # l'identifiant self n'est pas obligatoire ---> seeeeeeeelf # on reconnait le pointeur this du C++ # le deuxième argument est valeur resultat = valeur * 3 return resultat # cet appel génère trois qui est une INSTANCE de la CLASSE kitriple trois = kitriple() # trois hérite de tous les attributs de la classe kitriple # On parle de MEMBRES (pour les instances) et d'ATTRIBUTS (pour les classes) # et aussi de POLYMORPHISME : print (trois.fois('pas si banal que ca ...')) print (trois.fois(2000)) print (trois.fois(2222222222222222)) print (trois.fois([1,2,3])) print (trois.fois((1,2,3))) print (trois.fois(1+3j)) # on parlera d'appel par l'instance print (kitriple.fois(trois,'pas si banal que ca ...')) print (kitriple.fois(trois,2000)) print (kitriple.fois(trois,222222222222222)) print (kitriple.fois(trois,[1,2,3])) print (kitriple.fois(trois,(1,2,3))) print (kitriple.fois(trois,1+3j)) # on parlera d'appel à travers la classe ######################################################################## # l'objet classe kitriple_sous_GPL est créé par cette instruction # il s'agit d'une SOUS-classe de kitriple # qui HERITE de tous les attributs de la SUPER-classe kitriple # dans une classe il y a des attributs (méthodes et données) # encapsulation : GPL est "INACCESSIBLE" class kitriple_sous_GPL(kitriple): GPL = "GNU Public Licence" # affectation d'un attribut donnée de la classe def copyleft(self): # affectation d'un attribut methode de classe print (self.GPL) # cet appel genere TROIS qui est une instance de la classe kitriple_sous_GPL TROIS = kitriple_sous_GPL() # On parle de MEMBRES (pour les instances) et d'ATTRIBUTS (pour les classes) print (TROIS.fois(' pas si banal que ca ...')) print (TROIS.fois(2000)) print (TROIS.fois(2222222222222222)) print (TROIS.fois([1,2,3])) print (TROIS.fois((1,2,3))) print (TROIS.fois(1+3j)) TROIS.copyleft() # on parlera d'appel par l'instance print (kitriple_sous_GPL.fois(TROIS,' pas si banal que ca ...')) print (kitriple_sous_GPL.fois(TROIS,2000)) print (kitriple_sous_GPL.fois(TROIS,222222222222222)) print (kitriple_sous_GPL.fois(TROIS,[1,2,3])) print (kitriple_sous_GPL.fois(TROIS,(1,2,3))) print (kitriple_sous_GPL.fois(TROIS,1+3j)) kitriple_sous_GPL.copyleft(TROIS) # on parlera d'appel a travers la classe class kidouble_ou_kitriple: # random est un module STANDARD from random import randint MULALEAS=randint(2,3) def fois(self,valeur): resultat = valeur * self.MULALEAS return resultat deuzoutrois = kidouble_ou_kitriple() print (deuzoutrois.fois(' pas si banal que ca ...')) print (deuzoutrois.fois(2000)) print (deuzoutrois.fois(2222222222222222)) print (deuzoutrois.fois([1,2,3])) print (deuzoutrois.fois((1,2,3))) print (deuzoutrois.fois(1+3j)) print (deuzoutrois.MULALEAS)