Informatika2-2012/Gyakorlat10
A MathWikiből
(Változatok közti eltérés)
Stma (vitalap | szerkesztései) (→örökítsd az osztályt egy másikban, nézd meg miket érsz él benne, miket tudsz felülírni, mi lesz az eredménye) |
Stma (vitalap | szerkesztései) (→örökítsd az osztályt egy másikban) |
||
46. sor: | 46. sor: | ||
* nézd meg miket érsz él benne, miket tudsz felülírni, mi lesz az eredménye | * nézd meg miket érsz él benne, miket tudsz felülírni, mi lesz az eredménye | ||
<python> | <python> | ||
+ | class Fa: | ||
+ | v1 = 10 | ||
+ | v2 = [] | ||
+ | |||
+ | def add_v2(self, i): | ||
+ | self.v2 += [i] | ||
+ | |||
+ | x = Fa() | ||
+ | print x.v2 | ||
+ | [] | ||
+ | x.add_v2(3) | ||
+ | print x.v2 | ||
+ | [3] | ||
+ | x.add_v2(6) | ||
+ | print x.v2 | ||
+ | [3, 6] | ||
+ | |||
+ | class AlmaFa(Fa): | ||
+ | k = 'ato' | ||
+ | def teki(self, i): | ||
+ | self.v1 = i | ||
+ | |||
+ | y = AlmaFa() | ||
+ | print x.v1 | ||
+ | 10 | ||
+ | print y.v1 | ||
+ | 10 | ||
+ | y.teki(4) | ||
+ | print y.v1 | ||
+ | 4 | ||
+ | print x.v1 | ||
+ | 10 | ||
+ | Fa.v1 = 9 | ||
+ | print x.v1 | ||
+ | 9 | ||
+ | print y.v1 | ||
+ | 4 | ||
+ | print AlmaFa.v1 | ||
+ | 9 | ||
+ | print x.k | ||
+ | AttributeError: Fa instance has no attribute 'k' | ||
+ | print y.v2 | ||
+ | [] | ||
</python> | </python> | ||
A lap 2012. április 19., 23:02-kori változata
Tartalomjegyzék |
Class
készíts üres osztályt
- változtasd az osztály szintű változókat
>>> class A: ... pass ... >>> A.v1 = 10 >>> x=A() # létrehozok két példányt >>> y=A() >>> x.v1 # példányon belül is elérem az osztály szintű változót 10 >>> x.v1 = 34 # itt viszont létrehozok egy példány szintűt aminek a neve felülírja az osztály szintűt >>> y.v1 10 >>> x.v1 34 >>> A.v1 10 >>> A.v1 = 12 # itt az osztályszintű változót változtatjuk >>> x.v1 # mivel felülírtuk a v1-t az x példányban így ezen már nincs hatása 34 >>> y.v1 12 >>> A.v1 12
- példa dinamikus modosításra
>>> class A: ... pass ... >>> def pow(obj): ... return obj.base ** obj.exp ... >>> >>> x = A() >>> x.base, x.exp = 5,2 >>> print pow(x) 25
örökítsd az osztályt egy másikban
- nézd meg miket érsz él benne, miket tudsz felülírni, mi lesz az eredménye
class Fa: v1 = 10 v2 = [] def add_v2(self, i): self.v2 += [i] x = Fa() print x.v2 [] x.add_v2(3) print x.v2 [3] x.add_v2(6) print x.v2 [3, 6] class AlmaFa(Fa): k = 'ato' def teki(self, i): self.v1 = i y = AlmaFa() print x.v1 10 print y.v1 10 y.teki(4) print y.v1 4 print x.v1 10 Fa.v1 = 9 print x.v1 9 print y.v1 4 print AlmaFa.v1 9 print x.k AttributeError: Fa instance has no attribute 'k' print y.v2 []
készíts osztályokat
- Jegyzettömb
- Jegyzet
- Írd felül a konstruktorukat
- csináld meg, hogy a __len__ operátor a jegyzettömbben lévő jegyzetek számát adja vissza
- csináld meg, hogy a __getitem__ operátor a jegyzettömbben az adott indexű jegyzetet adja vissza
- csináld meg, hogy a __add__ operátor jegyzet esetén hozzáadja a jegyzetet, jegyzettömb esetén meg az abban lévő elemeket
- csináld meg, hogy a jegyzettömb create_gen() függvénye egy a jegyzeteken végigfutó generátort adjon vissza
- csináld meg, hogy a jegyzettömb __iter__ függvénye egy a jegyzeteken végigfutó iterátort adjon vissza
- stb. ha találsz értelmes operátort még azt is módosíthatod, pl. __str__, __repr__, __call__