bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


python_classes

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Següent revisió
Revisió prèvia
python_classes [2023/07/06 07:22]
josep_lladonosa_capell creat
python_classes [2023/07/06 21:02] (actual)
josep_lladonosa_capell afegides etiquetes
Línia 1: Línia 1:
 +{{tag> python classes #FpInfor #Daw #DawMp03 #DawMp03Uf04 #DawMp05 #DawMp05Uf3 }}
 +**Classes i objectes en Python**
 +
 Python permet organitzar els programes a partir d'objectes. Python permet organitzar els programes a partir d'objectes.
  
Línia 8: Línia 11:
  
 Paraules clau i elements destacables en el món de les classes en Python: Paraules clau i elements destacables en el món de les classes en Python:
-  * ''class'' +  * ''class'' (paraula inicial per a la creació d'una classe) 
-  * ''%%__init__%%'' (hi ha dos caràcters de subratllat a cada costat d'init) +  * ''%%__init__%%'' (constructor; hi ha dos caràcters de subratllat a cada costat d'init) 
-  * ''self'' +  * ''self'' (designació per al mateix objecte que es crea) 
-  * paràmetres+  * paràmetres (una classe pot rebre paràmetres) 
 + 
 + 
 +**Exemple amb explicacions: classe i objectes** 
 + 
 + 
 +<code python> 
 +# a Python tot són objectes (fins i tot les variables) 
 + 
 +# classe sense constructor ni atributs ni mètodes 
 +class A():  # en la declaració de la classe podem ometre els () 
 +    pass 
 + 
 + 
 +objecteA = A() 
 +print(type(objecteA))  # <class '__main__.A'> 
 + 
 + 
 +# classe amb atributs de classe 
 +# als atributs de classe s'hi pot accedir per mitjà de la classe (sense necessitat d'instància d'objecte) 
 +class B(): 
 +    b1 = 10 
 +    b2 = 30 
 + 
 + 
 +objecteB = B() 
 +print(objecteB.b1 + objecteB.b2)  # 40 
 + 
 + 
 +# classe amb mètodes (les funcions dins una classe s'anomenen mètodes) 
 +class C(): 
 +    def metodeC(self):  # self representa a cada objecte: 
 +        print("salutacions des de metodeC"
 + 
 + 
 +objecteC = C() 
 +objecteC.metodeC() 
 + 
 + 
 +# classe amb atributs de classe i mètodes 
 +class D(): 
 +    d = "SALUTACIONS DES D'ATRIBUT d"  # atributs de classe: compartits per tots els objectes 
 + 
 +    def metodeD(self): 
 +        print("salutacions des de metodeD i " + self.d) 
 + 
 + 
 +objecteD = D() 
 +objecteD.metodeD()  # salutacions des de metodeD i SALUTACIONS DES D'ATRIBUT d 
 +objecteD.d = "" 
 +objecteD.metodeD()  # salutacions desde metodeD i 
 +# podem establir el valor d'un atribut de classe per a totes les instàncies que s'aniran 
 +# creant assignant per mitjà de la classe (com si fos membre abstracte) 
 +D.d = "NOU VALOR PER A TOTS ELS NOUS" 
 +objecteD2 = D() 
 +objecteD3 = D() 
 +objecteD4 = D() 
 +objecteD2.metodeD() 
 +objecteD3.metodeD() 
 +objecteD4.metodeD() 
 +# als objectes creats prèviament no els afectaria 
 +print(objecteD.d, "cometes buides"
 +objecteD.metodeD() 
 + 
 + 
 +# classe amb constructor (a Python només pot haver-hi 1 constructor de classe) 
 +# self es obligatori 
 +# constructor __init__ s'escriu amb doble guió baix 
 +# si l'escrivíssim malament (per exemple un guió simple) no donaria error sinó que seria un mètode vulgar 
 +class E(): 
 +    def __init__(self): 
 +        print("salutacions des del constructor"
 + 
 + 
 +objecteE = E()  # en instanciar l'objecte s'executa el constructor 
 + 
 + 
 +# classe ambn constructor i atributs d'instància 
 +class F(): 
 +    def __init__(self, f): 
 +        # atributs d'instància: són especifics de cada objecte 
 +        # inicialitzem els atributs d'instància amb els paràmetres del constructor 
 +        self.atributf = f 
 +        print("salutacions des del constructor i " + f) 
 + 
 + 
 +objecteF = F("salutacions des d'atribut d'instància passat com a paràmetre"
 + 
 + 
 +# salutacions des del constructor i salutacions des d'atribut d'instància passat com a paràmetre 
 + 
 +# exemple complet 
 +class Cotxe():  # els 'docstring' s'escriuran sota la declaració amb triples cometes 
 +    """ aquesta classe construeix les característiques d'un cotxe """ 
 + 
 +    n_rodes = 4  # atribut de classe 
 + 
 +    def __init__(self, color): 
 +        # és habitual usar per a l'atribut el mateix identificador del paràmetre 
 +        self.color = color  # atribut d'instància que pren el valor del paràmetre 
 +        self.velocitat = 0  # atribut d'instància independent de cap paràmetre 
 + 
 +    # mètode sense cos (sense sentències) 
 +    def frena(self): 
 +        pass 
 + 
 +    def accelera(self, acceleracio): 
 +        """ mètode accelera amb el paràmetre acceleració """ 
 +        self.velocitat = self.velocitat + acceleracio 
 +        # acceleració no duu el self al davant 
 +        # ja que no és un membre de la classe sinó un paràmetre de mètode 
 + 
 + 
 +cotxe1 = Cotxe("gris"
 +print(cotxe1.n_rodes, cotxe1.color, cotxe1.velocitat)  # 4 gris 0 
 + 
 +cotxe2 = Cotxe("blau"
 +cotxe2.n_rodes = 3 
 +cotxe2.frena()  # no executa res 
 +cotxe2.accelera(50) 
 +cotxe2.accelera(70) 
 +print(cotxe2.n_rodes, cotxe2.color, cotxe2.velocitat)  # 3 blau 120 
 + 
 +</code>
  
  
  
python_classes.1688628130.txt.gz · Darrera modificació: 2023/07/06 07:22 per josep_lladonosa_capell