Informatika2-2012/Gyakorlat10
A MathWikiből
(Változatok közti eltérés)
Stma (vitalap | szerkesztései) (→készíts üres osztályt) |
Stma (vitalap | szerkesztései) (→Class) |
||
(egy szerkesztő 6 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
+ | [http://wiki.math.bme.hu/view/Informatika2-2012 <-- vissza] | ||
+ | |||
== Class == | == Class == | ||
+ | |||
+ | [http://wiki.math.bme.hu/view/Informatika2-2012/Gyakorlat10m megoldás] | ||
=== készíts üres osztályt === | === készíts üres osztályt === | ||
43. sor: | 47. sor: | ||
</python> | </python> | ||
− | + | === örökítsd az osztályt egy másikban === | |
− | === ö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 |
+ | <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> | ||
+ | |||
=== készíts osztályokat === | === készíts osztályokat === | ||
− | * | + | * Jegyzettomb - névvel ami a jegyzeteket tárolja |
− | * Jegyzet | + | * Jegyzet - a jegyzetek amik szöveget tárolják |
* Írd felül a konstruktorukat | * Írd felül a konstruktorukat | ||
− | * csináld meg, hogy a __len__ | + | ** a jegyzetet a tarolni kívánt szöveggel paraméterezzük |
− | * csináld meg, hogy a __getitem__ | + | ** a jegyzettömböt az első jegyzet szövegével paraméterezzük |
− | * csináld meg, hogy a __add__ | + | * csináld meg, hogy a jegyzettömb __len__ operátora a jegyzettömbben lévő jegyzetek számát adja vissza |
+ | * csináld meg, hogy a jegyzettömb __getitem__ operátora a jegyzettömbben az adott indexű jegyzetet adja vissza | ||
+ | * csináld meg, hogy a jegyzettömb __add__ operátora 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 create_gen() függvénye egy a jegyzeteken végigfutó generátort adjon vissza | ||
− | * csináld meg, hogy a jegyzettömb __iter__ | + | * csináld meg, hogy a jegyzettömb __iter__ operátora 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__ | * stb. ha találsz értelmes operátort még azt is módosíthatod, pl. __str__, __repr__, __call__ | ||
=== egészítsd ki a labirintus beolvasót a with kulcsszó használatával === | === egészítsd ki a labirintus beolvasót a with kulcsszó használatával === | ||
+ | |||
+ | |||
+ | [http://wiki.math.bme.hu/view/Informatika2-2012 <-- vissza] |
A lap jelenlegi, 2012. május 1., 14:27-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
- Jegyzettomb - névvel ami a jegyzeteket tárolja
- Jegyzet - a jegyzetek amik szöveget tárolják
- Írd felül a konstruktorukat
- a jegyzetet a tarolni kívánt szöveggel paraméterezzük
- a jegyzettömböt az első jegyzet szövegével paraméterezzük
- csináld meg, hogy a jegyzettömb __len__ operátora a jegyzettömbben lévő jegyzetek számát adja vissza
- csináld meg, hogy a jegyzettömb __getitem__ operátora a jegyzettömbben az adott indexű jegyzetet adja vissza
- csináld meg, hogy a jegyzettömb __add__ operátora 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__ operátora 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__