Diferència entre revisions de la pàgina «POO operadors 2»
Salta a la navegació
Salta a la 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 | + | 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 22:01, 31 oct 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