Informatika2-2012/Eloadas10
Stma (vitalap | szerkesztései) (→Osztályok) |
Stma (vitalap | szerkesztései) (→öröklés) |
||
64. sor: | 64. sor: | ||
* '''__elem''' - privát | * '''__elem''' - privát | ||
+ | '''isinstance''' - lehet vizsgálni a példányt | ||
+ | <python> | ||
+ | >>> isinstance(object, int) | ||
+ | False | ||
+ | >>> isinstance(int, object) | ||
+ | True | ||
+ | >>> isinstance(x, object) | ||
+ | True | ||
+ | </python> | ||
+ | |||
+ | '''issubclass''' - a leszármazást lehet vele vizsgálni hasonló képen | ||
+ | |||
+ | Több osztályt is megadhatunk leszármazás során | ||
+ | <python> | ||
+ | class A(B,C): | ||
+ | pass | ||
+ | </python> | ||
− | ==== konstruktor ==== | + | ==== konstruktor, operátorok ==== |
Az '''__init__''' metódus az osztály konstruktorát reprezentálja. Amikor létrehozunk egy példányt az osztályból ez a függvény hívódik meg. | Az '''__init__''' metódus az osztály konstruktorát reprezentálja. Amikor létrehozunk egy példányt az osztályból ez a függvény hívódik meg. | ||
− | A '''__repr__''' | + | A '''__repr__''' - a repr() által visszaadott elemet definiálhatjuk, hasonló képen a '''__str__''' a str() fv-vel. |
<python> | <python> | ||
81. sor: | 98. sor: | ||
return 'This position is in:\n\tx: {0:d}, y: {1:d}, z:{2:d}'.format(self.pos[0],self.pos[1],self.pos[2]) | return 'This position is in:\n\tx: {0:d}, y: {1:d}, z:{2:d}'.format(self.pos[0],self.pos[1],self.pos[2]) | ||
</python> | </python> | ||
+ | |||
+ | További operátorok: | ||
=== Kivételek === | === Kivételek === |
A lap 2012. április 18., 00:06-kori változata
Tartalomjegyzék |
Osztályok és kivételek
Osztályok
Az osztályokat alapvetően egységbezárásra használják. Ami által a program tagolhatósága és újrahasznosítása nő.
Osztályok változókból és metódusokból állnak.
class MyClass: pass
Az előbbi kód egy alap gyűjtő osztályt reprezentál.
class MyClass: gvar = 667 def fv(self): pass
A gvar változó a MyClass osztály szintű azaz az osztály nevével elérhető nem kell példányosítani. A fv metódus csak példányon hívható meg.
függvény metódus kapcsolata
>>> x = MyClass() # a myclass osztály példánya x >>> MyClass.f(x) 'hello world' >>> x.f() 'hello world'
Az osztály elemeit nem szükséges a definíció során megadni. Utólag is hozzáadhatjuk.
x.count = 1 x.count += 1 # es szinten torolheto is del(x.count)
A python osztályok alapvetően nem valók absztrakt definiálásra, ebben van az egyszerűsége.
öröklés
>>> class A(object): ... pass ... >>> a = A() >>> a.t = 5 >>> a.t 5
Alapvetően minden osztály az object alosztálya. Az alosztály örökli az ős minden elemét.
Megegyezés szerint.
- _elem - fél privát
- __elem - privát
isinstance - lehet vizsgálni a példányt
>>> isinstance(object, int) False >>> isinstance(int, object) True >>> isinstance(x, object) True
issubclass - a leszármazást lehet vele vizsgálni hasonló képen
Több osztályt is megadhatunk leszármazás során
class A(B,C): pass
konstruktor, operátorok
Az __init__ metódus az osztály konstruktorát reprezentálja. Amikor létrehozunk egy példányt az osztályból ez a függvény hívódik meg.
A __repr__ - a repr() által visszaadott elemet definiálhatjuk, hasonló képen a __str__ a str() fv-vel.
class Position3D: def __init__(self,x,y,z): self.pos = (x,y,z) def get_y(): return self.pos[1] def __repr__(self): return 'This position is in:\n\tx: {0:d}, y: {1:d}, z:{2:d}'.format(self.pos[0],self.pos[1],self.pos[2])
További operátorok:
Kivételek
try: ... except <exp> as <v>: ... else: ... finally: ...
with értelmezése
Egyenértékű kód:
__enter__() try: doSth() finally: __exit__()
iterátorok
yield hogyan
Memória barát funkcionális program elem, generátor