Informatika2-2012/Gyakorlat10
A MathWikiből
A lap korábbi változatát látod, amilyen Stma (vitalap | szerkesztései) 2012. április 19., 23:02-kor történt szerkesztése után volt.
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__