POO operadors 2: Diferència entre les revisions

De Cacauet Wiki
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «Un altre exemple de POO: operadors el tindriem amb aquesta classe Client. Fixa't en què: * redefinim l'operador __lt__ (less than) * afegim el mètode __repr__ que …».)
 
 
Línia 1: Línia 1:
Un altre exemple de [[POO: operadors]] el tindriem amb aquesta classe Client.
+
Un altre exemple de [[POO Operadors]] el tindriem amb aquesta classe Client.
  
 +
<br>
 +
 +
== Classe Client ==
 
Fixa't en què:
 
Fixa't en què:
 
* redefinim l'operador __lt__ (less than)
 
* redefinim l'operador __lt__ (less than)
 
* afegim el mètode __repr__ que permet fer un print de l'objecte (molt pràctic per fer print de llistes d'objectes).
 
* afegim el mètode __repr__ que permet fer un print de l'objecte (molt pràctic per fer print de llistes d'objectes).
 
* en el '''main''' creem una llista de clients i la ordenem d'acord amb el nou operador.
 
* en el '''main''' creem una llista de clients i la ordenem d'acord amb el nou operador.
 
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Línia 24: Línia 26:
 
         return str(self.nom)+"("+str(self.despesa)+"€)"
 
         return str(self.nom)+"("+str(self.despesa)+"€)"
  
 +
</syntaxhighlight>
  
 +
<br>
 +
 +
== Comparant instàncies ==
 +
Un cop definit l'operador de clients, el podem utilitzar per comparar instàcies, per exemple, mostrarem el nostre "client favorit, és a dir, el què ha efectuat més despesa:
 +
 +
<syntaxhighlight lang="python">
 +
c1 = Client()
 +
c1.despesa = 3000
 +
 +
c2 = Client()
 +
c2.despesa = 6000
 +
 +
if c2 > c1:
 +
    print c2.nom + " és el nostre client favorit"
 +
else
 +
    print c1.nom + " és el nostre client favorit"
 +
</syntaxhighlight>
 +
 +
<br>
 +
 +
== Ordenant llistes ==
 +
Una altra utilitat de la utilització d'operadors és ordenar llistes d'objectes.
 +
 +
<syntaxhighlight lang="python">
 
clients = []
 
clients = []
 
noms = ["Pere","Joan","Lluc","Sònia","albert","Laura"]
 
noms = ["Pere","Joan","Lluc","Sònia","albert","Laura"]

Revisió de 00:01, 1 nov 2013

Un altre exemple de POO Operadors el tindriem amb aquesta classe Client.


Classe Client[modifica]

Fixa't en què:

  • redefinim l'operador __lt__ (less than)
  • afegim el mètode __repr__ que permet fer un print de l'objecte (molt pràctic per fer print de llistes d'objectes).
  • en el main creem una llista de clients i la ordenem d'acord amb el nou operador.
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from random import randint
 
class Client():
    nom = ""
    nif = ""
    despesa = 0
 
    def __lt__(self,cli):
        return self.despesa < cli.despesa
 
    def __repr__(self):
        return str(self.nom)+"("+str(self.despesa)+"€)"


Comparant instàncies[modifica]

Un cop definit l'operador de clients, el podem utilitzar per comparar instàcies, per exemple, mostrarem el nostre "client favorit, és a dir, el què ha efectuat més despesa:

c1 = Client()
c1.despesa = 3000
 
c2 = Client()
c2.despesa = 6000
 
if c2 > c1:
    print c2.nom + " és el nostre client favorit"
else
    print c1.nom + " és el nostre client favorit"


Ordenant llistes[modifica]

Una altra utilitat de la utilització d'operadors és ordenar llistes d'objectes.

clients = []
noms = ["Pere","Joan","Lluc","Sònia","albert","Laura"]
 
for nom in noms:
    c = Client()
    c.nif = "0000000X"
    c.nom = nom
    c.despesa = randint(0,10000)
    clients.append(c)
 
print "CLIENTS"
print clients
 
print "\nORDENATS"
clients.sort()
print clients