Informatika2-2013/Gyakorlat12
A MathWikiből
(Változatok közti eltérés)
28. sor: | 28. sor: | ||
* __len__: hossz lekérése | * __len__: hossz lekérése | ||
* __repr__: karakterekkel való reprezentálás | * __repr__: karakterekkel való reprezentálás | ||
+ | |||
+ | == Öröklõdés == | ||
+ | |||
+ | <python> | ||
+ | class A(object): | ||
+ | def __init__(self, x): | ||
+ | print "A letrehozva" | ||
+ | self.v1 = x | ||
+ | def v1ketszeres(self): | ||
+ | return self.v1 * 2 | ||
+ | |||
+ | class B(A): | ||
+ | def __init__(self, x, y): | ||
+ | print "B letrehozva" | ||
+ | super(B, self).__init__(x) | ||
+ | self.v2 = y | ||
+ | def v2haromszoros(self): | ||
+ | return self.v2 * 3 | ||
+ | |||
+ | |||
+ | objA = A(5) | ||
+ | print "========" | ||
+ | objB = B(1, 4) | ||
+ | |||
+ | print "========" | ||
+ | print objA.v1ketszeres() | ||
+ | |||
+ | print "========" | ||
+ | print objB.v1ketszeres() | ||
+ | print objB.v2haromszoros() | ||
+ | </python> | ||
+ | |||
+ | A super() függvénynek adunk egy osztályt, és egy objektumot, tekinthetjük úgy a mûködését, hogy a neki adott objektum azon részét adja vissza ami az adott osztály (B) õsosztályának (A) felel meg. | ||
+ | |||
+ | Egy szemléletesebb [http://math.bme.hu/~kkovacs/info2/folyadekok.py példa]. |
A lap 2013. április 30., 05:45-kori változata
Ismétlés
Mûveletek átdefiniálása, osztályok részletesebben:
class Vektor(object): def __init__(self, x, y): self.x = x self.y = y def __add__(self, jobb): return Vektor(self.x + jobb.x, self.y + jobb.y) def __sub__(self, jobb): return Vektor(self.x - jobb.x, self.y - jobb.y) def __mul__(self, szam): return Vektor(self.x * szam, self.y * szam) def hossz(self): return sqrt(self.x ** 2 + self.y ** 2) def __repr__(self): return "(" + str(self.x) + ", " + str(self.y) + ")"
- __init__: inicializálás
- __add__: összeadás
- __sub__: kivonás
- __mul__: szorzás
- __div__: osztás
- __pow__: hatványozás
- __len__: hossz lekérése
- __repr__: karakterekkel való reprezentálás
Öröklõdés
class A(object): def __init__(self, x): print "A letrehozva" self.v1 = x def v1ketszeres(self): return self.v1 * 2 class B(A): def __init__(self, x, y): print "B letrehozva" super(B, self).__init__(x) self.v2 = y def v2haromszoros(self): return self.v2 * 3 objA = A(5) print "========" objB = B(1, 4) print "========" print objA.v1ketszeres() print "========" print objB.v1ketszeres() print objB.v2haromszoros()
A super() függvénynek adunk egy osztályt, és egy objektumot, tekinthetjük úgy a mûködését, hogy a neki adott objektum azon részét adja vissza ami az adott osztály (B) õsosztályának (A) felel meg.
Egy szemléletesebb példa.