Disseny d’una classe simple

  • Conté atributs (=dades) i mètodes (=funcions o operacions) sobre objectes de la classe.

Sintaxi:

Definició de la classe
class NomClasse:
    def __init__(self, ...):
        self.atr1 = ...
        self.atr2 = ...
        ...
    def metode1 (self, ...):
        ...
Ús de la classe
var = NomClasse(...)  # Creació (o instanciació)

var.atr               # Consulta un atribut
var.atr = valor       # Assigna un valor a un atribut

x = var.metode1(...)  # Crida el mètode de x

Exemple: Classe Vector

Mètodes especials

  • El seu nom comença i acaba amb doble subratllat.

  • Estan prefixats per Python, tant el nom com el nombre de paràmetres, i de vegades el tipus de retorn.

Mètode especial

Crida

Significat

__init__(self, ...)

var=Classe(...)

Crea (instancia) un objecte de la classe

__str__(self)

str(obj), print(obj)

Transforma a string. És cridat per print()

Operadors matemàtics

__add__(self, other)

obj + obj2

Suma

__sub__(self, other)

obj - obj2

Resta

__mul__(self, other)

obj * obj2

Multiplicació

__truediv__(self, other)

obj / obj2

Divisió

Operadors de comparció. Retornen un booleà.

__eq__(self, other)

ojb1 == obj2

Igual que

__ne__(self, other)

ojb1 != obj2

Diferent de

__lt__(self, other)

ojb1 < obj2

Més petit que

__le__(self, other)

ojb1 <= obj2

Més petit o igual que

__gt__(self, other)

ojb1 > obj2

Més gran que

__ge__(self, other)

ojb1 >= obj2

Més gran o igual que

  • Quan en una classe hi definim un d’aquests operadors, es diu que es sobrecarrega. Per exemple, podem sobrecarregar l’operador de suma (+) per a què serveixi per a sumar no només nombres i llistes, sinó també vectors.